ch7-24 참조변수의 형변환
⭐ 참조변수의 형변환의 결과는 사용할 수 있는 멤버의 갯수를 조절하는 것이다. 멤버의 갯수 말고는 달라지는 점이 없다.
3.6 실수형을 정수형으로 형변환 하면 3으로 값이 바뀐다. 기본형의 형변환은 값이 바뀐다. 하지만 참조변수의 형변환은 사용할 수 있는 멤버 갯수만 변하고 주소값, 객체 등 전혀 바뀌는 것이 없다.
FireEngine 인스턴스의 멤버는 상속받은 4개, 자신의 것 1개 총 5개가 있다.
Car c = (Car)f;는 Car 타입의 참조변수 c에 참조변수 f를 대입한다. f는 FireEngine 타입으로 대입 연산자에서 양변의 타입이 일치하지 않기 때문에 형변환을 해줘야 한다. 참조변수 f와 FireEngine 인스턴스는 일치하지만, 참조변수 c는 Car 타입이므로 일치하지 않는다. c.color, c.door, c.rive( ), c.stop( )은 가능하지만, c.water( )는 불가능하다.
참조변수 f,c 둘다 같은 주소를 가리키고 있지만 사용할 수 있는 멤버의 갯수는 다르다.
FireEngine f2 = (FireEngine)c; 또한 양변의 타입이 맞지 않기 때문에 형변환을 해야한다. f2의 타입은 FireEngine이므로 사용할 수 있는 멤버가 5개가 된다.
⭐ 사용할 수 있는 멤버의 갯수를 바꾸는 방법이 참조변수의 형변환이다. 조상의 참조변수를 만들어서 자손의 참조변수를 대입한다.
ch7-25 참조변수의 형변환 - 예제
FireEngine fe = new FireEngine( );
car = fe; car = (Car)fe; 둘 다 가능하다. 형변환 생략할 수 있다. 이때, Car 타입의 참조변수는 멤버를 4개만 갖고 있어 car.water()를 호출할 수 없다.
fe2 = (FireEngine)car;은 형변환 생략할 수 없다. 사용할 수 있는 멤버가 증가할 경우 형변환을 꼭 써줘야 한다. 5개가 있는데 4개만 쓰는 경우는 안 쓰는 것이라 자동 형변환이 되지만, 4개에서 5개로 늘어날 때는 새로 늘어난 멤버를 알려줘야 하므로 형변환을 생략할 수 없다. 따라서 fe2.water( ); 는 호출 할 수 있다.
'자바 > 자바의 정석 Ch.7 객체지향 프로그래밍 II' 카테고리의 다른 글
ch7-26 instanceof 연산자 (0) | 2023.04.19 |
---|---|
ch7-24,25 참조변수의형변환(2) (0) | 2023.04.19 |
ch7-23 다형성 (0) | 2023.04.19 |
ch7-22 캡슐화 (0) | 2023.04.18 |
ch7-21 접근제어자 (0) | 2023.04.18 |