익명클래스는 앞에 있는 클래스를 상속받아서 만들어진 것을 앞에 클래스로 업캐스팅해서 사용하는 것! 업캐스팅할 수 밖에 없는 이유: 업캐스팅 안하려면 타입을 써줘야하는데, 무슨 타입인지 클래스 이름이 없어서 무조건 부모타입을 써줄 수 밖에 없음. 업캐스팅 하기 싫으면 익명클래스를 안 쓰면 됨. 익명클래스를 쓰는 이유 : 일회적으로 사용하기 위해 익명클래스가 자주 쓰이는 곳 : 반드시 오버라이딩을 해서 써야 하는 경우, 추상메소드 *요약정리* 클래스나 인터페이스를 상속받은 이름없는 클래스를 업캐스팅하여 사용하는 것으로 해석한다 따라서 새로운 멤버를 넣는 것은 무의미하다 오버라이딩하여 사용을 많이 하며, 일회성으로 사용하기 위해서 익명클래스를 활용한다
인터페이스 interface 작업의 틀 >> 추상메소드만 존재하는 추상클래스 추상클래스이기 때문에 인터페이스도 객체화x 상속할 때 : 클래스 자식클래스 extends 부모클래스{} 인터페이스 자식클래스 implements 부모클래스{} 자식클래스 implements 부모클래스, 부모클래스1, 2,....{} 여러 개를 동시에 상속받을 수 있다 자바는 원칙적으로 모호성이 발생할 수 있기 때문에 다중상속을 허용하지 않는다 그러나 인터페이스 문법이 추가되며 사실상 다중 상속을 허용하고 있다 인터페이스에서는 static final 변수; 추상메소드(); >>abstract를 생략해도 컴퓨터가 추상메소드라고 인식함. 인터페이스이기 때문에 사용가능하다 **static final 변수 static 변수는 모든 인스턴..
추상클래스 abstract class 추상메소드를 갖고 있는 클래스 추상메소드가 하나라도 있으면 추상클래스! 추상메소드 abstract method 메소드의 이름과 리턴타입만 선언되어있고, 기능은 정의되어 있지 않은 메소드 추상메소드는 중괄호가 없음 추상클래스를 상속받은 자식에게 오류가 나지 않게 해결하는 방법 1.추상메소드를 오버라이딩한다 2.자식도 추상클래스로 만든다 추상클래스는 메모리상에 미구현된 멤버가 존재하기 때문에 객체화가 불가능하다
JDK Java Development Kit : 자바 실행 시 필요한 라이브러리 파일 존재 JRE Java Runtime Evniorment : JVM을 생성하는 부분 JVM Java Virtual Machine : 자바 프로그램을 실행시켜주기 위한 목적, 실행할 수 있는 주체 JAVA언어로 만든 프로그램을 실행시킬 때 반드시 필요한 것 자바의 컴파일러이다 기본생성자를 만들어준다 JAVA를 사용하기 위해서 JDK(JRE, JVM 포함) 설치 하여야 함 개발 툴 : eclipse JVM의 구성 ClassLoader : 모든 클래스(코드)는 참조 순간에 동적으로 JVM에 연결되며 메모리에 로딩 Execution Engine : JVM은 Method Area의 Byte Code를 Execution Engine..
업캐스팅 / 다운캐스팅 : 부모-자식관계 클래스일 때만 가능!! 업캐스팅 : 자식타입 > 부모타입 자식타입을 부모타입으로 업캐스팅이 된다면 1.자식에서 새롭게 정의된 멤버를 사용이 불가능하다 2.자식에서 재정의된 메소드는 자식에서 재정의된 대로 동작한다 부모타입 변수 = (부모타입)자식객체; 다운캐스팅 : 부모타입 > 자식타입(X) 부모타입은 자식타입으로 캐스팅할 수 없다 다운캐스팅은 업캐스팅된 객체(원래 자식타입인 객체)를 다시 자식타입으로 되돌리는 행위 업캐스팅으로 인해 못 썼던 멤버들을 다시 활용할 수 있다 자식타입 변수 = (자식타입)업캐스팅된 변수;