20150916


다형성(polymorphism)-instanceof 연산자



상속 관계에서는 부모클래스의 참조변수로 자식클래스의 인스턴스를 참조 할 수 있다고 했습니다.
그렇다는 말은 참조변수 타입만으로는 실제 인스턴스 타입을 알 수 없습니다. 그래서 참조변수가 가지고 있는 실제 인스턴스를 알기 위해서  instanceof 연산자를 사용 합니다.

아래 코드로 설명 하겠습니다.
class Car {
.....
}

class SuperCar extends Car {
....
}

class Test2 {
	public static void main(String[] args) {

		Car car = new Car();

if(car instance of SuperCar){  //참조변수 car 가 superCar 와 상속관계이기 때문에 true 를 반환합니다.
      System.out.println("참조변수 car 는 SuperCar 와 상속 관계입니다.");
}
		
	
c = sc; //형변환 생략가능 
sc = (SuperCar)c;  //형변환 생략할 수 없다.		
	}
}
14번if(car instanceof SuperCar){...}  //car 는 Car 클래스의 참조변수 입니다.

왼쪽에는 참조변수 오른쪽에는 타입(클래스명)이 피연산자로 위치하고 결과는 boolean 값으로 true, false 중에 하나를 반환합니다.

instanceof 오른쪽에 있는 피연산자 SuperCar 클래스와 이클래스가 상속받는 모든 부모 클래스와 왼쪽에 있는 참조 변수 타입과의 상속관계를 비교해서 일치하는 클래스가 있으면 형변환이 가능하기 때문에 true 를 반환합니다.


'프로그래밍 > java' 카테고리의 다른 글

추상클래스(abstract class)  (0) 2015.09.16
Java 다형성(polymorphism)-매개변수의 다형성  (0) 2015.09.16
Java 다형성(polymorphism)  (0) 2015.09.16
java 메서드(method)  (0) 2015.09.12
Java 변수(Variables)  (0) 2015.09.12

+ Recent posts