다형성이란 무엇인가2
1. “하나의 참조변수로 여러 타입의 객체를 참조할 수 있는 것 “
2. 조상타입의 참조변수로 자손타입의 객체를 다룰 수 있는 것이 다형성
설명서
앞에서 CaptionTv인스턴스를 CaptionTv타입의 참조변수 외에도 조상인 Tv클래스 타입의 참조변수로도 다룰 수 있다고 했는데요.
이 둘의 차이는 사용할 수 있는 멤버의 개수입니다.
CaptinoTv타입의 참조변수로는 CaptionTv인스턴스의 모든 멤버를 사용할 수 있지만...
Tv타입의 참조변수로는 CaptionTv인스턴스의 모든 멤버를 사용할 수 없습니다.
단지, Tv클래스에 정의된 멤버만 사용할 수 있습니다.
실제 인스턴스가 CaptionTv인스턴스임에도 불구 하고... Tv타입의 참조변수로는...
Tv클래스에 정의된 5개의 멤버만 사용할 수 있다는 것입니다.
CaptionTv에 정의된 멤버변수 text와 caption메서드는 Tv타입의 참조변수로는 사용할 수 없습니다.
전에 참조변수를 리모콘에 비유해서 얘기했는데요...
실제로 참조변수는 리모콘과 유사한 점이 많습니다.
예를 들어서... Tv를 하나 샀습니다. 그런데 금새 고장나서...
새로나온 Caption기능이 있는 새로운 Tv를 샀습니다.
전에 샀던 Tv와 같은 회사 제품이라서... 옛날에 쓰던 Tv리모콘도
새로산 Tv에 쓸 수 있습니다.
그런데... 옛날 리모콘으로는 새로운 기능인 Caption기능을 사용할 수 없겠죠.
아무리 Tv가 Caption기능을 가지고 있어도요...
옛날 리모콘에는 캡션기능 관련된 버튼이 아예 없잖아요...
그래서 Tv타입의 참조변수로는 Tv클래스에 정의된 멤버들만 사용할 수 있는 겁니다.
참조변수의 타입에 따라... 사용할 수 있는 멤버의 개수가 달라진다는 것 이해하셨죠?
그러면 왜 이렇게 할까요? CaptionTv타입의 참조변수로 CaptionTv인스턴스를 사용하면 될텐데
굳이 Tv타입의 참조변수로 CaptionTv인스턴스를 다룰 까요...
Tv타입의 참조변수로는 CaptionTv인스턴스의 일부밖에 사용못하는데 말이죠.
그 이유는 나중에 따로 올리도록 하겠습니다.
'Backend > java' 카테고리의 다른 글
참조변수의 형변환 (0) | 2018.08.12 |
---|---|
다형성이란 무엇인가3 (0) | 2018.08.12 |
다형성이란 무엇인가. (0) | 2018.08.12 |
제어자의 조합 (0) | 2018.08.12 |
생성자의 접근 제어자 (0) | 2018.08.12 |
#IT #먹방 #전자기기 #일상
#개발 #일상