Parent parent = new Child();
- 암묵적 형변환이 가능한 경우
A a1 = new b();
A a2 = new X();
A a3 = new C();
A a4 = new Y();
B b1 = new C();
X x1 = new Y();
C c = new C();
B b2 = c;
Y y = new Y();
x x2 = y;
Unit u1 = army; Unit u2 = navy; Unit u3 = airforce;
u1.attack(); u2.attack(); u3.attack();
// 부모 클래스가 가지고 있는 기능이 아니므로 에러 u1.tank(); u2.nucleus(); u3.bumbing();
Child child = (Child)parent;
ChildClass child1 = new ChildClass(); ParentClass prent1 = child1; // 암묵적형변환 ChildClass child2 = (ChildClass)parent1;
- 가능한 경우 Army army1 =new Army(); Unit u = army1; // 암묵적 형변환 Army army2 = (Army)u; // 명시적 형변환
- 가능한 경우 Unit u = new Navy(); Navy navy = (Navy)u; // 명시적 형변환
- 불가능한 경우 Unit u = new Unit(); Army army = (Army)u; // 명시적 형변환
- 최초 생성된 것과 다른 형식으로 변환하는 것은 불가능 하다. Army army = new Army(); Unit u = army; Navy navy = (Navy)u;
- > 불가능한 두가지 경우 문법적인 오류는 없기
때문에, 이클립스에서는 에러를 검출하지 못한다.
하지만 프로그램을 실행시켰을 경우에는
에러가 발생