JAVA

Polymorphism (객체의 다형성)

오매준 2024. 5. 13. 23:35

객체의 다형성


- 객체가 다양한 형태를 지닐 수 있다는 성질
- 강아지는 강아지이기도 하고 동물이기도 하다
  강아지는 동물이다(o), 동물은 강아지다(x)
- 아메리카노는 아메리카노이기도 하고 커피이기도하다
  아메리카노는 커피이다(ㅇ), 커피는 아메리카노이다(x)
- 자식 클래스 인스턴스는 부모 클래스 타입의 변수에 대입될 수 있다

# 업 캐스팅

 

- 자식 타입 인스턴스가 부모 타입이 되는 것
- 자식 타입은 아무 문제 없이 부모 타입이 될 수 있다
- 업 캐스팅 된 상태에서는 자식 클래스였을때 가지고 있던 기능은 사용할 수 없다
- 자식클래스 인스턴스가 업 캐스팅 된 상태에서 오버라이딩된 메서드를 사용하는 경우
  자식 클래스의 메서드(자식 클래스에서 마음대로 개조한 메서드)가 실행된다 

 

# 다운 캐스팅

- 부모 타입은 일반적으로 자식 타입이 될 수 없다
- 업캐스팅되었던 자식 클래스의 인스턴스만이 다시 원래의 타입으로 돌아올 수 있다
  (ex> 원래 강아지였던 인스턴스만 다시 강아지로 돌아올 수 있다)

 

# instanceof 연산자

- 해당 인스턴스가 특정 클래스의 인스턴스인지 검사해주는 연산자
- 결과는 true/ false로 알려준다