반응형
남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.
참조변수의 형변환
- 사용할 수 있는 멤버의 갯수를 조절하는 것
- 조상 자손 관계의 참조변수는 서로 형변환 가능
* 객체가 없어도(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
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
자바의 정석 기초 ( 추상클래스 (abstract class) / 추상메서드 (abstract method) ) (0) | 2020.07.14 |
---|---|
자바의 정석 기초 ( 매개변수 다형성 / 하나의 배열에 여러 종류 객체 저장 ) (0) | 2020.07.12 |
자바의 정석 기초 ( 캡슐화 / 다형성) (0) | 2020.07.12 |
자바의 정석 기초 ( 제어자 / 접근 제어자 / public / protected / default / private ) (0) | 2020.07.12 |
자바의 정석 기초 ( 패키지 / 패키지 선언 / 클래스 패스 / import문 / static import문 ) (0) | 2020.07.10 |
댓글