카테고리 없음

20240822 8일차

happyst 2024. 8. 22. 16:52

[다형성]
- 기본형의 형변환과 달리 참조형의 형변환은 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

숙제!!
이것이 자바다 - 인터페이스 강의 듣기