package ch07;
public class Ch0705
{
//상속과 클래스 래퍼런스의 관계 (중요) -> object -> 컬렉션 -> 제너릭
public static void main(String[] args)
{
Son son = new Son();
son.playing(); //형변환전 son에서 새로 추가된함수
Father father; //인스턴스화(초기화)되지 않은..
//★ 클래스간의 형변황 되려면 반드시 해당클래스간의 계승관계가 있어야 함.
//1) 서로 계승관계를 가지고 있는 두개의 레퍼런스간의
//대입실험, 상위클래스 레퍼런스에 하위클래스 래퍼런스를 대입(형변환 필요없다)
father = son;
//father.playing(); -> X : 하위클래스의 멤버변수는
//상위클래스의 레퍼런스에서 호출이 불가능 하다.
//2) 하위클래스의 레퍼런스에 상위클래스 레퍼런스를 대입하는 경우
//계승관계가 있을 경우.
//반드시 형변환을 해야 가능.
//반대상황.. 상위클래스를 하위클래스로 넣을려고 할때..
Son son1; //초기화되지 않은 레퍼런스 변수
son1 = (Son)father;
son1.playing();
}
}
****** Father.java ******
package ch07;
public /* final */ class Father //final 상속시키지 않겠다고 명시한것.
{
public /* final */ void work() // final 하위클래스에서 오버라이딩 허용안함.
{
System.out.println("아버지께서 일하셔"); //상속과 클래스 레퍼런스 관계 위해...
}
}
****** Son.java ******
package ch07;
public class Son extends Father
{
//son에서 새로 추가된 함수
public void playing()
{
System.out.println("놀고먹는 거 좋아해");
}
public static void main(String[] args)
{
}
}