프로그래밍/JAVA
자바의 정석 기초 ( 참조변수의 형변환 / instanceof 연산자 )
✲
2020. 7. 12. 23:09
반응형
남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.
참조변수의 형변환
- 사용할 수 있는 멤버의 갯수를 조절하는 것
- 조상 자손 관계의 참조변수는 서로 형변환 가능
* 객체가 없어도(NULL) 형변환은 가능하지만, 실행하면 NullPointException 발생
예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
class Ex7_7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Car car = null;
FireEngine fe = new FireEngine();
FireEngine fe2 = null;
fe.water();
car = fe; // car = (Car) fe; 형변환 생략
// car.water(); // 에러 . Car타입의 참조변수인 car로는 water() 사용 불가
fe2 = (FireEngine)car; // 자손타입 ← 조상타입, 형변환 생략 불가
fe2.water();
}
}
class Car {
String color;
int door;
void drive() {
System.out.println("drive, Brrr~~");
}
void stop() {
System.out.println("stop!!!");
}
}
class FireEngine extends Car{
void water() {
System.out.println("water!!!");
}
}
|
cs |
instanceof 연산자
- 참조변수의 형변환 가능 여부 확인에 사용, 형변환 가능하면 true 반환
ex)
void doWork(Car c){
if (c instanceof FireEngine) {
FireEngine fe = (FireEngine) c;
fe.water();
....
ex)
FireEngine fe = new FireEngine();
System.out.println(fe instanceof Object); // true
System.out.println(fe instanceof Car); // true
System.out.println(fe instanceof FireEngine); // true
// 조상 및 자기자신은 항상 True
Object obj = (Object)fe; // OK
Car c = (Car) fe ; // OK
반응형