FlowerBombs
객체 형변환 본문
객체 형변환
암묵적 ↔ 명시적
클래스 A와 B가 상속관계에 있을 경우, 자식 클래스의 객체를 부모 클래스의 객체에 대입하는 경우
1 2 3 4 5 6 7 8 9 | public class A { public void foo(){...} public void bar(){...} } public class B extends A { public void bar(){...} // 부모의 기능을 재정의 public void hello(){...} // 부모와 상관없이 새롭게 추가한 기능 } | cs |
1 2 | B b = new B(); A a = b; //암묵적 형변환 | cs |
1 | A a = new B(); | cs |
형변환이 된 객체는 부모에게 상속받았거나 부모의 기능을 재정의한 것들만 사용가능하다.
위 소스코드에서 hello()라는 메서드는 사용할 수 없도록 가려진다.
명시적
부모 형태의 객체가 다시 자식 형태로 되돌아가는 경우의 형변환.
최초 생성된 객체형태가 자식클래스였던 객체를 부모 형태로 변환했다가 다시 원래의 형태로 되돌릴 경우만 사용 가능함.
1 2 | A a = new B(); B k = (B) a; // 변환할 클래스 이름을 () 안에 명시. | cs |
Comments