인스턴스 변수 초기화 순서
- 인스턴스 멤버의 초기화는 생성자로 한다
- 2개의 대체 방법이 있다
- 초기화 블럭
- final methods
- 자바 컴파일러가 초기화 블럭을 모든 생성자 안에 복사를 한다
- 여러 생성자가 초기화 블럭을 사용할 때 이 방법을 사용할 수도 있다
- final은 덮어쓸 수 없다
다운캐스팅이 안되는 이유
- 자식 클래스의 구성은 부모 클래스의 구성보다 방대하다
- 자식 클래스의 참조변수가 부모 클래스의 객체를 참조할 경우에 부모 클래스의 구성 요소에는 접근이 가능하지만 자식 클래스에 존재하는 인스턴스 변수나 메소드의 접근이 불가능하기 때문
- 변수가 원하는 정보를 다 채워주지 못한다 (부모 데이터 < 자식 데이터)
- 하지만 업캐스팅을 선해하고 다운캐스팅을 한다면 문제없이 캐스팅이 가능
public class Parent{
// 부모
}
public class Child extends Parent {
// 자식
}
public class DownCasting {
// 런타임 에러
// Child child = (Child) new Parent();
// 업캐스팅
Parent parent = new Child();
// 다운캐스팅
Child child = (Child) parent();
}