package com.java1.day16;
/* 다형적 표현에서 맴버에 대한 접근 규정들
* 부모 클래스가 가지고 있는 모든 맴버에 접근할수 있다.
* 단, 자식 클래스에서 메서드 오버라이딩을 했다면 오버라이딩이 된 자식의 맴버에 접근이 된다.
* 맴버 필드의 경우 부모 클래스의 맴버 필드에만 접근 할수 있다. (필드? 속성 이라는 뜻이며, 변수들을 의미)
* 자식 클래스 맴버 필드는 오버라이딩이 된 자식 클래스의 메서드에 의해서만 접근할수 있다.
*/
public class PolymorphismEx07 {
public static void main(String[] args) {
Parent4 p = new Child4(); // 다형적 표현
System.out.println("x = " + p.x); // 자식을 부모에 넣으면 부모클래스 안에 있는것들만 접근이 가능하다.
// System.out.println("y = " + p.y); // 컴파일 에러 발생!
//자손 타입 -> 조상타입 : 형변환 생략가능
//자손타입 <- 조상타입 : 형변환 생략 불가
System.out.println("x = " + ((Child4)p).y); //명시적 형변환을 해주면 된다.
}
}
class Parent4 {
int x = 100;
// int y = 200;
}
class Child4 extends Parent4 {
int x = 300;
int y = 400;
}
x = 100
x = 400