3초기억력

형변환 본문

자바_기초

형변환

잠수콩 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("불가능");
//		}
		
		
	}

}
Comments