설명서
Car타입의 참조변수 car를 선언하고요... 그러면 이렇게 참조변수 car가 만들어집니다.
그 다음에... FireEngine인스턴스를 생성하고 이 인스턴스를 참조변수 fe가 가리키게 합니다.
그러면 위와같은 그림이 되겠죠...
그리고 FireEngine타입의 참조변수 fe2를 선언했습니다.
그 다음에...참조변수 fe에 대해서 메서드 water()를 호출합니다.
그러면... FireEngine인스턴스의 water메서드가 호출되어... 화면에 water!!!라는 글자가 출력됩니다.
그 다음에... 참조변수 fe의 값을 참조변수 car에 저장합니다.
자손의 타입에서 조상의 타입으로의 형변환... 즉, 리모콘 버튼의 개수를 줄이는 형변환...이기 때문에 형변환을 생략할 수 있었습니다.
참조변수가 저장하고 있는 값은 인스턴서의 주소값이니까.. 참조변수 fe에 저장되어 있는 주소 100번지가 참조변수 car에 저장되겠죠.
그래서... 참조변수 car역시 FireEngine인스턴스를 가리기게 됩니다.
하지만... 참조변수 fe와는 달리 참조변수 car로는 water()를 호출할 수 없습니다.
Car클래스에 정의된 멤버가 아니기 때문입니다.
그 다음에... 참조변수 car에 저장된 값을 참조변수 fe2에 저장합니다. 이 두 변수는 타입이 다르기 때문에...
형변환 연산자를 사용해줘야겠죠... 조상타입의 참조변수의 값을 자손타입의 참조변수에 저장하는 것이기 때문에...
형변환을 생략할 수 없습니다.
이제 참조변수 fe2에도 100번지가 저장되어서... 참조변수 fe2로도 FireEngine인스턴스를 다룰 수 있습니다.
참조변수 car와는 달리... 참조변수와 실제 인스턴스의 타입이 같기 때문에...
참조변수 fe2로는 인스턴스의 모든 멤버를 다룰 수 있습니다.
참조변수의 형변환은... 참조변수의 타입만을 변경할 뿐...
변수의 값이나 인스턴스에는 아무런 영향을 주지 않는다는 점... 확인하시기 바랍니다.
'Backend > java' 카테고리의 다른 글
참조변수와 인스턴스변수의 연결 (0) | 2018.08.12 |
---|---|
Instanceof 연산자란 무엇인가. (0) | 2018.08.12 |
참조변수의 형변환 (0) | 2018.08.12 |
다형성이란 무엇인가3 (0) | 2018.08.12 |
다형성이란 무엇인가2 (0) | 2018.08.12 |
#IT #먹방 #전자기기 #일상
#개발 #일상