[Java] java 입문 08 - 다형성
[Java] java 입문 08 - 다형성
- Casting
- object클래스로 객체를 생성하고 자식 클래스의 메소드나 필드를 이용하려면 casting을 이용해야 한다.
- 괄호를 이용하여 Object type 변수에 담긴 p1을 Phone type으로 바꾼다.
(data type=설명서)
- Casting하기 전 p1객체는 Phone클래스에 있는 method를 사용할 수 없다.
(자식 클래스는 상위 클래스의 method, field를 이용할 수 있지만 부모클래스는 하위 클래스를 그냥 쓸 수 없다)
- 상속 (Extends)
* Phone 클래스를 상속받는 HandPhone클래스
* HandPhone클래스를 상속받는 SmartPhone클래스
- Overriding : 조상 클래스의 특정 메소드를 재정의하여 사용할 때 이를 오버라이딩이라 한다. 즉, 덮어쓰기를 한다고 보면 된다.
- 오버라이딩 사용법 : ctrl+space누른 후 메소드명 누르기
* 메인 메소드
- HandPhone클래스에서는 SmartPhone의 메소드를 사용할 수 없다.
- p2는 모든 메소드를 사용할 수 있다.
- 다형성
- object type을 갖고있는 p1은 casting이 가능하다.
- casting을 해도 객체는 변함없는 같은 객체이다. 다만, Phone클래스에서 사용할 수 있는 method를 이용가능하다.
- ClassCastException
- 특정 객체를 생성한 후 casting을 하면 ClassCastException오류가 발생한다.
(변함없이 id가 19인 객체에 사용설명서만 교체하는격)
- SmartPhone 객체가 존재하지 않는데 casting을 당연히 할 수 없다.
- 아래도 마찬가지로 특정 객체에 사용설명서만 교체하는 격