Language/Java

[Java] java 입문 08 - 다형성

별토끼. 2017. 5. 17. 18:34
반응형


[Java] java 입문 08 - 다형성


  • Casting
- 클래스마다 생략되있을 뿐 extends object 가 있다. 즉, object객체를 상속하고 있다는 것

- object클래스로 객체를 생성하고 자식 클래스의 메소드나 필드를 이용하려면 casting을 이용해야 한다.

- 괄호를 이용하여 Object type 변수에 담긴 p1을 Phone type으로 바꾼다.

(data type=설명서)

- Casting하기 전 p1객체는 Phone클래스에 있는 method를 사용할 수 없다.

(자식 클래스는 상위 클래스의 method, field를 이용할 수 있지만 부모클래스는 하위 클래스를 그냥 쓸 수 없다)



  • 상속 (Extends)
- extends를 이용하여 부모 클래스의 모든 기능을 쓰고 추가로 어떠한 기능을 정의하고 싶을 때 사용 
 
*  Object클래스를 상속받는 Phone Class

* Phone 클래스를 상속받는 HandPhone클래스

* HandPhone클래스를 상속받는 SmartPhone클래스

 - Overriding : 조상 클래스의 특정 메소드를 재정의하여 사용할 때 이를 오버라이딩이라 한다. 즉, 덮어쓰기를 한다고 보면 된다.

- 오버라이딩 사용법 : ctrl+space누른 후 메소드명 누르기

* 메인 메소드

 - HandPhone클래스에서는 SmartPhone의 메소드를 사용할 수 없다. 

 - p2는 모든 메소드를 사용할 수 있다. 




  • 다형성
- 자식 클래스는 아래와 같이 여러가지 type을 갖을 수 있다. 이를 다형성 이라고 한다.

- object type을 갖고있는 p1은 casting이 가능하다.

- casting을 해도 객체는 변함없는 같은 객체이다. 다만, Phone클래스에서 사용할 수 있는 method를 이용가능하다.

  • ClassCastException

- 특정 객체를 생성한 후 casting을 하면 ClassCastException오류가 발생한다.

(변함없이 id가 19인 객체에 사용설명서만 교체하는격)

- SmartPhone 객체가 존재하지 않는데 casting을 당연히 할 수 없다.

- 아래도 마찬가지로 특정 객체에 사용설명서만 교체하는 격







반응형