java2019. 9. 13. 18:21

 

1, 자식을 부모의 참조자료형에 저장하면 자동으로 형변환이 일어남.

2, 부모 타입을 자식타입으로 변경하는 경우 아래의 코드와 같이 명시적 형변환을 시켜야한다.

3, instanceof 연산자를 사용할 때는 최하위 자식 -> 부모 순으로 필터링 한다.

 

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

		/*
		 * B b = new B();
		 * 
		 * b.printname();
		 */
		
		
		
		objectCastArray();
		
		
	}
	
	public static void objectCastArray() {
		
		A [] objectArray = new A[3];
		
		objectArray[0]= new A();
		objectArray[1]= new B();
		objectArray[2]= new B();
		
		printIfBClass(objectArray);
	}
	
	public static void printIfBClass(A [] objectArray) {
		
		
		
		for ( A a : objectArray) {
			
			if ( a instanceof B) { // instanceof 를 써서 type 체크할 경우, 가장 하위에 있는 자식 타입부터 확인
			//if ( a instanceof A) {  옆에 있는 녀석 처럼 체크하면 a가 A인지 B인지 알 수 없음. B또한 A타입이기 때문.
				B b = (B)a; //명시적 형변환
				b.printname();
			}
		}
		
	}
	
	
	static class A{
	
		private void printname() {
			
			System.out.println("AA");
		}
	}
	
	
	static class B extends A{
			B(){
				super();
			}
		public void printname() {
			System.out.println("BB");
		}
		
	}


}

 

출처 : 자바의 신

Posted by easy16