Java 객체배열, instanceof

NasK!m_311·2022년 8월 24일
0

Java

목록 보기
27/39
post-thumbnail

💡 객체배열이란?

1. 일반 데이터 타입의 배열과 동일한 개념으로, 같은 클래스의 객체 여러개를 그룹화 할 수 있다.


2. 일반 데이터 형의 배열 생성과 객체배열 생성비교.

	1) 일반 데이터형 배열
    
    	ex)	int[] data = new int[3];
        
    2) 객체배열의 경우
    
    	ex) Army[] data = new Army[3];
        
        
3. 각각의 경우에 대한 배열의 요소 할당 처리.

	-> 일반 데이터형은 단순히 값을 대입하지만,
    	객체배열은 'new'를 사용해서 객체를 할당해야한다.

	1) 일반 데이터형 배열
    
    	ex)	data[0] = 1;
        	data[1] = 2;
            data[2] = 3;
        
    2) 객체배열의 경우
    
    	ex) data[0] = new Army();
			data[1] = new Army();
			data[2] = new Army();

💡 부모클래스의 배열에 자식클래스의 객체 넣기.

- 배열의 생성이 부모클래스로 지정되었을 경우, 
	모든 자식클래스의 객체들은 그 배열에 포함될 수 있다.
    
    	ex)	Unit[] unit = new Unit[3];
        
        	unit[0] = new Army();		// 배열의 요소 할당 과정에서 업캐스팅이 이루어 진다.
            unit[1] = new Navy();		// 배열의 요소 할당 과정에서 업캐스팅이 이루어 진다.
			unit[2] = new AirForce();	// 배열의 요소 할당 과정에서 업캐스팅이 이루어 진다.	

💡 객체배열의 활용

1. 일괄처리가 가능하다.

	-> 서로 다른 객체를 부모형태의 배열에 담게 되면, 반복문으로 일괄처리가 가능하다.
    -> 이 때, 배열의 각 요소를 통해 사용하는 메소드가 '오버라이드'되어 있을 경우,
    	부모의 메소드가 아니라 '자신이 재정의한 기능'을 뜻한다.
        
        
2. 원래의 기능으로 복귀하기.
	
    -> 배열의 각 요소가 확장한 기능을 사용하기 위해서는
    	원래의 클래스 형태로 '다운캐스팅' 되어야 한다.
    -> 하지만 반복적으로 처리되는 과정에서 
    	몇 번째 요소가 어떤 클래스에서 최초 생성 되었는지를 판단하기란 쉽지 않다.
    -> 이 경우에, instanceof 연산자를 이용하여 클래스타입을 판단한다.

💡 instanceof 연산자

-> instanceof 연산자는 어떤 객체에 대한 출처를 판단하여 boolean 형의 값으로 반환한다.

	ex)	if(unit[0] instanceof Army){	-> 조건식의 값 : true
    		Army temp = (Army)unit[0];
    	}
        
        -> 해석 : 조건이 '참'이면 Army 타입의 temp 객체에 unit[0]을 다운캐스팅해서 넣어주세요.
profile
메리아빠, 먹다가 죽어도 되는 개발자.(살뺴자....)

0개의 댓글