ch7-24 참조변수의 형변환
- 사용할 수 있는 멤버의 갯수를 조절하는 것
그 이외는 아무것도 변하지 않는다. 기본형처럼 값이 달라지지 않는다
- 조상 자손 관계의 참조변수는 서로 형변환 가능
- 형변환 연산자 생략 유무는 크게 중요하지 않는다. 오류나면 그냥 써주면 된다
조상 자손관계는 서로 형변환 가능하다는 걸 알아주면 된다
c.color c.door c.drive c.stop은 가능하지만 c.water는 선언이 안 되어 이기 때문에 불가능하다
FireEngine는 5개 전부 가능하다
- 리모콘을 사용함으로서 사용할 수 있는 멤버의 갯수를 늘렸다 줄였다 하는 것
--------------------------------
참조변수의 형변환 2
** 실제 객체가 가진 멤버 개수를 확인하고 그걸 넘지 않는 게 중요하다. 넘지만 않으면 줄이고 늘리는 건 상관없다
** 그러니 형변환의 타입보다 실제 가리키는 객체가 무엇인지 중요하다. 멤버의 개수를 넘어서면 안 된다
----------------------------------------------------
ch7-26 instanceof 연산자
- 참조변수의 형변환 가능여부 확인에 사용. 가능하면 true반환
- 형변환 전에 반드시 instanceof로 확인해야 함
형변환 전에는 반드시 instanceof 연산자로 형변환 해도 되는지 확인해야 한다.
Q. 참조변수의 형변환은 왜 하나요?
참조변수(리모콘)을 변경함으로써 사용할 수 있는 멤버의 갯수를 조절하기 위해서
--> 객체도 그대로, 참조변수의 값도 그대로다. 참조변수의 타입만 달라진다!
Q. instanceof연산자는 언제 사용하나요?
참조변수를 형변환하기 전에 형변환 가능여부를 사용할 때
---------------------------------------------------------
ch7-27 매개변수의 다형성
- 참조형 매개변수는 메서드 호출시, 자신과 같은 타입 또는 자손타입의 인스턴스를 넘겨줄 수 있다
(장점)
1. 다형적 매개변수
2. 하나의 배열로 여러종류 객체 다루기
(다형성이란)
1. Tv t = new SmartTv(); --> 조상타입의 참조변수로 자손 다루기
2. 참조변수의 형변환 --> 리모콘 바꾸기. 사용가능한 멤버갯수 조절
3. instancef 연산자 --> 형변환 가능여부 체크
그런데 물건이 다양하니 그때마다 매번 메서드를 추가하면 복잡해진다
그래서 이렇게 줄여준다.
--> Tv 객체를 만들고 그걸 Product 타입의 참조변수로 다루고
그걸 넘겨주는 것
p에 Tv가 들어가있으니까
메인메서드 안에서 이 Tv를 사용할 수 없다 . 리모콘이 없으니까
근데 이 buy메서드 안에서는 쓸 수 있다. 리모콘 Product p를 받으니까