다형성 객체 생성

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("-----------------------------[캐스트 사용]");
  
 }
}

좋은 웹페이지 즐겨찾기