-
--------------------------------------------------
https://youtu.be/fw7Nm_li0pE
다형성 : 조상타입 참조변수로 자손타입 객체를 다루는 것.
여태까진 Tv t = new Tv(); : Tv를 다룰 때는 Tv리모콘으로 해왔음
원래 일치해야되는데 다형성은 타입 불일치도 OK(조상자손인관계에서)
Tv t = new SmartTv(); : Tv리모콘으로 SmartTv를 다루는 것.
조상타입 참조변수(t)로 자손타입 객체(SmartTv)를 다루는 것.
Tv <- SmartTv ( 상속관계 )
불일치 할때는 어떤 장점이 있는지. 2가지!
--------------------------------------------------
장점에 대해 알아보기 전에 특징, 차이
(1)SmartTv s = new SmartTv(); : 참조변수와 인스턴스 타입이 일치
스마트티비 리모콘으로 스마트티비를 보는 것.
리모콘 단추 7개(멤버), SmartTv 버튼5개 Tv것, , 2개는 SmartTv것 = 7개
이 리모콘으로는 이 7개 모든 기능 사용할 수 있다.
(2)Tv t = new SmartTv(); : 조상 타입 참조변수로 자손 타입 인스턴스 참조
Tv리모콘(5개). 제품은 스마트Tv(7개)
Tv클래스에 정의된 5개의 멤버에 대한 버튼 뿐. SmartTv는 7개의 멤버를 갖고 있어도 5개밖에, 일부만 사용가능
조상이니까 멤버가 작거나 같잖아
조상 타입의 참조 변수로 SmartTv인스턴스를 사용하면 기능이 7개여도 리모콘에 버튼이 없으면 일부만.
--------------------------------------------------
자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다.
5개버튼 < 7개기능 이쪽이 크니까 기능 2개를 안쓰는거 괜찮음
7개버튼 > 5개기능 기능이 없는데 누르면 없는거 호출해서 에러
--------------------------------------------------
참조변수의 형변환 :
사용할 수 있는 멤버의 갯수를 조절하는 것. 주소값 안바뀌고 객체 안바뀌고 멤버갯수만.
조상자손관계일때만 가능
같은 객체를 가리키고 있는 리모콘도 사용할 수 있는 멤버의 갯수가 다르겠네
Car<-FireEngine
FireEngine f = new FireEngine();
Car c = (Car)f; - 조상으로 형변환은 생략가능
이러면 c도 f도 FireEngine을 가리키지만 사용할 수 있는 멤버의 개수가 다름.'Lang > JAVA' 카테고리의 다른 글
Enum (0) 2021.12.31 A bb = new C(); (0) 2021.12.26 [JAVA] 상수와 리터럴 연산 & 컴파일러 -> final 변수 (0) 2021.12.23 Lambda & Stream (1)람다식 (0) 2021.07.31