자바_기초
형변환
잠수콩
2019. 5. 27. 15:15
//형변환은 상속에서만 가능하다.
//Object 아래면 가능.
class AA {
int a, b;
}
class BB extends AA{
int k;
}
class CC extends BB{
int m;
}
class DD{
int h;
}
public class InstanceOfEx {
public static void main(String[] args) {
// instanceof 연산자
// - 참조변수가 참조하는 인스턴스의 실제 타입을 체크할 때 사용
// - 결과 true면, 해당 타입으로 형변환이 가능하다.
// - 객체가 특정 클래스나 인터페이스로부터 생성된 객체인지 판별
// 사용법
// 객체변수 instanceof 클래스명(인터페이스명)
String ob = "홍길동";
if(ob instanceof String) {
System.out.println("ob는 String 클래스의 객체입니다.");
}
//클래스 A, B, C 비교
AA a = new AA();
BB b = new BB();
CC c = new CC();
if (c instanceof AA) {
System.out.println("c는 AA클래스의 객체:형변환 됩니다.");
}
if (a instanceof CC) {
System.out.println("a는 CC클래스의 객체:형변환 됩니다.");
} else {
System.out.println("a는 CC클래스의 객체:형변환 안됩니다.");
}
//형변환 해보기
AA d = new CC();
if (d instanceof AA) {
System.out.println("d는 AA클래스의 객체:형변환 됩니다.");
} else {
System.out.println("d는 AA클래스의 객체:형변환 안됩니다.");
}
//형변환 해보기2 --> 강제로 바꾸는 것.(위험함)
// CC e = (CC)new AA();
//불가. up, down casting 은 명시적으로 되지만, 상속이 관계가 아니므로 불가.
// CC f = (CC)new DD();
// if (f instanceof DD) {
// System.out.println("가능");
// } else {
// System.out.println("불가능");
// }
}
}