자바의 다형성과 캐스팅을 공부하구 있는데요...
개념잡기가 넘 어렵고 헷갈리네요.. 고수님들의 도움부탁드립니다...
class A
{
int x = 10;
int printNum(int z)
{
return z+10;
}
}
class Bextends A
{
int x = 100;
int printNum(int z)
{
return z+100;
}
}
class CastTest
{
public static void main(String args[]){
/*
//상위클래스 = 상위클래스 ;
A a = new A();
System.out.println(a.x);//10
System.out.println(a.printNum(0));//10
//하위클래스 = 하위클래스
B b = new B();
System.out.println(b.x); //10
System.out.println(b.printNum(0)); //100
//상위클래스 = 하위클래스
A a = new B();
System.out.println(a.x);//10
System.out.println(a.printNum(0));//100 //하위클래스 = 상위클래스
B b = new A();
System.out.println(b.x);//
System.out.println(b.printNum(0));//
//상위클래스 = (하위클래스)상위클래스
A a = new A();
a = (B)a;
System.out.println(a.x);//
System.out.println(a.printNum(0));//
//하위클래스 = (상위클래스)하위클래스
B b = new B();
b = (A)b ;
System.out.println(b.x);//
System.out.println(b.printNum(0));//
*/// 상위클래스 = (상위클래스)하위클래스
A a;
B b = new B();
a = (A)b ;
System.out.println(a.x);//
System.out.println(a.printNum(0));//
}
};소스는 위의 내용과 같은데요...
각각을 컴파일할때 나오는 결과값이 왜 그렇게 나오는지
그리고 컴파일이 안되는 경우와 실행이 안되는경우..
왜 그렇게 되는지 알것두 같구 모를것두 같구
암튼 넘 헷갈려서요~~! 좋은 답변 부탁드립니다...!!
난초 2026.06.06
흠.. 일일이 알려 드리는것보다.. 딱 두가지만 말씀 드리겠습니다.
하위클래스의 객체는.. 상위 클래스로 캐스팅하여. 상위클래스의 참조로. 사용할 수 있습니다.
그리고.. 참조가 상위클래스의 참조라도, 실제로 만들어진 객체의 메소드가 호출되게 됩니다.
고생하세요~ ^_^