학습 범위 : 229 - 276p
static메소드의 제약조건
컴파일 단계에서 객체 생성 전 클래스 로딩 할 때 메모리에 올라가게 하는 static의 특성을 생각했을 때 nonstatic 멤버들을 참조할 수 없는 점이나 this(객체를 가리킴)과 함께 사용할 수 없는 점은 당연한 것 같다.
final
final + class = 고자?!?!(상속 x)
final + method = 유일무이 (상속에서 오버라이딩 X)
final + field = const
상속
👍부모 클래스 접근지정
접근 지정자 | desc |
---|---|
private | 같은 클래스 |
default | 같은 pkg |
public | 공용 |
protected | default + SubClass |
👍서브 클래스에서 객체 생성할 때 서브에서 부모로 생성자가 호출되고, 부모에서 서브로 실행되며 super()
로 호출할 부모 생성자를 정해놓는게 원칙이라는 점이 흥미로웠다.
👍다운캐스팅을 하려면 업케스팅을 했다가 해야한다니... 어쩐지 instanceof연산자 결과가 이상하다 했다. 업캐스팅하면 어차피 이전 서브클래스의 extended필드는 못쓰는데 instanceof연산자에서 true가 왜 나오나 했다. 다운캐스팅 전에 널가드 처럼 확인하려고 했구나..
Person tak1
Student tak2 = new Student();
tak1 = tak2;
Person lee1
Researcher lee2= new Researcher();
lee1 = lee2;
tak1 instanceof Person; //true
tak1 instanceof Student; //false