public class PolymorphismTest {
public static void main(String[] args) {
SubClass A = new SubClass();
System.out.println(A.str);
A.method();
SuperClass B = A;
System.out.println(B.str);
B.method();
//END
/*
* Output
*
* SUB!
* Sub Class method() call
* SUPER!
* Sub Class method() call
*/
}
}
class SuperClass{
String str = "SUPER!";
public void method() {
System.out.println("Super Class method() call");
}
}
class SubClass extends SuperClass{
String str = "SUB!";
@Override
public void method() {
System.out.println("Sub Class method() call");
}
}
SuperClass B = A; System.out.println(B.str); //SUPER! B.method(); //Sub Class method() call!
상속 관계에서 객체의 멤버 변수나 메서드가 중복(@Override)되는 경우가 있을 수 있다.
이런 경우에는,
왜? 메모리에 생성된 실제 객체에 최적화된 메서드가 동작하기 때문이다.