본문 바로가기
study/Java

[Java] 22. 상속2

by 금이패런츠 2022. 3. 21.
728x90
반응형
package chap7;
/*
 * 부모클래스의 멤버와 자손클래스의 멤버가 같은 멤버인 경우
 *   멤버변수 : 참조변수의 자료형을 따른다.
 *   멤버메서드 : 객체에 최종 오버라이딩된 메서드가 호출됨.
 *   
 * 부모클래스의 멤버와 자손클래스의 멤버가 다른 경우
 *  부모클래스의 참조변수로 참조시 부모클래스의 멤버만 접근 가능
 *  자손클래스의 참조번수로 참조시 부모클래스의 멤버도 접근 가능   
 */
class Parent3 {
	int x = 10;
	void method() {
		System.out.println("Parent3 클래스의 method");
	}
}
class Child3 extends Parent3 {
	int x = 20;

	void method() {
		System.out.println("Child3 클래스의 method");
	}
}
public class BindingEx1 {
	public static void main(String[] args) {
		Parent3 p = new Child3();
		Child3 c = (Child3)p; //자손참조변수 <= 부모참조변수 : 형변환 연산자 필수
		System.out.println("p.x=" + p.x); //10
		System.out.println("c.x=" + c.x); //20
		p.method();                       //Child3.method 호출
		c.method();                       //Child3.method 호출
		
		//부모타입의 객체를 자손타입의 참조변수로 참조 => 예외 발생. ClassCastException
		Child3 c2 = (Child3)new Parent3(); //예외 발생. ClassCastException
		System.out.println(c2.x); //
	}
}
728x90
반응형