class Person {
void method1() {System.out.println("에이에이에이");}
void ppp() {System.out.println("ppp");}
}
class Student extends Person {
void method1() {System.out.println("오버라이딩 - AAA");}
void sss() {System.out.println("sss");}
void x() {
method1();
super.method1();
}
}
public class Java100_oop_Polymorphism3 {
public static void main(String[] args) {
// [1]: 객체 생성 --> 부모 + 자식 클래스의 모든 자원을 다 쓸 수 있다.
// [!]: 그런데 말이죠 --> 자식 클래스에서 오버라이딩된 부모 클래스의 원본 메소드를 호출하고 싶다면? --> super 사용.
Student s1 = new Student();
System.out.println("-----------------------[super 사용]");
s1.x();
System.out.println("-----------------------[super 사용]");
// [2]: 객체 생성 --> 범위는 부모의 자원만을 쓸 수 있다.(?)
//[!]: 그런데 말이죠..-> 자식의 메소드를 바로 호출하고 싶다면? --> 캐스트 필요.
Person s2 = new Student();
System.out.println("-----------------------------[캐스트 사용]");
((Student)s2).sss(); //sss
System.out.println("-----------------------------[캐스트 사용]");
}
}