부모 타입으로 자동 타입 변환된 이후에는 부모 클래스에 선언된 필드와 메소드만 접근이 가능하다.= 변수는 자식 객체를 참조하지만 변수로 접근 가능한 멤버는 부모 클래스 멤버로만 한정된다.
하지만, 메소드가 자식 클래스에서 오버라이딩되었다면 자식 클래스의 메소드가 대신 호출된다.
부모 클래스
package sec07.exam02_promotion_access_YJ;
public class Parent {
//메소드
public void method1() {
System.out.println("부모 메소드 1");
}
public void method2() {
System.out.println("부모 메소드 2");
}
}
자식 클래스
package sec07.exam02_promotion_access_YJ;
public class Child extends Parent {
//메소드
@Override //부모 메소드 2 재정의
public void method2() {
System.out.println("자식 메소드 2");
}
public void method3() {
System.out.println("자식 메소드 3");
}
}
자동 타입 변환 후의 멤버 접근
package sec07.exam02_promotion_access_YJ;
public class ChildExample {
public static void main(String[] args) {
Child child = new Child();
Parent parent = child;
//Parent parent = new Child(); 와 같음
parent.method1();
parent.method2(); //자식클래스에서 재정의된 메소드가 호출
//자식클래스에서 오버라이딩 된 메소드는 부모클래스에서 숨겨짐
child.method2(); // = parent.method2();
//parent.method3(); //호출 불가
}
}
부모 메소드 1
자식 메소드 2
자식 메소드 2
'Java > 7. 상속 (Inheritance)' 카테고리의 다른 글
Day 10 : 하나의 배열로 객체 관리 (0) | 2021.11.01 |
---|---|
Day 9 : 필드의 다형성 (0) | 2021.10.29 |
Day 9 : 자동 타입 변환 (Type Promotion) (0) | 2021.10.29 |
Day 9 : protected 접근 제한자 (0) | 2021.10.29 |
Day 9 : 재정의할 수 없는 final 메소드 (0) | 2021.10.29 |