20240822 8일차
[다형성]
- 기본형의 형변환과 달리 참조형의 형변환은 2가지 타입으로 나뉨
1) upcasting (child 타입 -> parent 타입)
- parent 클래스의 정보는 이미 child 클래스가 전부 가지고 있기 때문에 별도의 형변환이 필요 없음 (자동 형변환)
- child와 parent의 공통된 것만 사용 가능
- child 클래스 전용의 것은 사용 불가
- child 클래스의 정보를 담을 수 있는 객체에 parent 클래스의 자료형을 부여해서, parent 클래스처럼 사용하는 것 (기능이 제한됨)
- upcasting 하고 메소드를 실행할때, 만일 child 클래스에서 오버라이딩한 메서드가 있을 경우, parent 클래스의 메서드가 아닌 오버라이딩 된 메서드가 실행됨!!! (동적 바인딩, 런타임 다형성)
2) downcasting (parent 타입 -> child 타입)
- 단순히 upcasting의 반대가 아님!!
- child 클래스의 정보를 담을 수 있는 객체의 자료형이 parent 클래스로 전환되어 있던 것 (upcasting 되어있던 객체)를 다시 되돌리는 것
- 다른 child로 downcasting 불가!!! (ex. 삼각형 -> 도형 -> 사각형 불가)
- 왜 되돌리느냐? 다시 child 클래스의 전용 메서드를 사용할 수 있도록 되돌리는 것
ex) parent: 일반 TV, child: 스마트 TV
- upcasting
SmartTV smartTV = new SmartTV();
TV tv = smartTV;
일반 TV는 스마트 TV의 채널 조정은 가능하지만, 넷플릭스를 켤 수 없다
- instanceof 연산자: 형 변환된 객체 구별
* 사용법: 변수 instanceof 타입
> 변수: 객체를 참조하는 변수
> 타입: class 이름 or interface 이름
그림 그려보기!!
C:\JavaWork\javaex\src\intermediateJava\TypeCastingDemo.java
숙제!!
이것이 자바다 - 인터페이스 강의 듣기