상속관계에 있는 클래스 사이에서는 기본형 변수처럼 참조변수도 형변환이 가능하다.(자손타입 -> 조상타입
, 조상타입->자손타입
만 가능. 형제관계는 형변환이 불가능하다!)
클래스 멤버(스태틱 변수, 스태틱 메서드)는 인스턴스 멤버를 사용할 수 없습니다. 반면 인스턴스 멤버는 클래스 멤버를 호출할 수 있습니다.
이는 클래스 멤버와 인스턴스 멤버가 생성되는 시기
와 관련이 있습니다!
클래스 멤버는 클래스가 메모리에 로딩될 때 생성됩니다. 인스턴스 멤버는 인스턴스가 생성될 때, 메모리에 로딩되고 생성됩니다. 이 둘은 메모리에 생성되는 시기와 장소가 다릅니다.
인스턴스가 생성되는 시점에는 항상 클래스가 메모리에 로딩되어 있음이 보장됩니다. 클래스가 존재하지 않는데 그 클래스의 인스턴스를 생성할 수는 없기 때문입니다. 따라서 인스턴스 멤버는 클래스 멤버를 참조할 수 있습니다.
하지만 클래스 멤버는 인스턴스 멤버를 사용할 수 없습니다. 클래스는 로딩되었지만 인스턴스가 존재하지 않는 경우도 있기 때문입니다!