19. 객체 배열

강태석·2022년 8월 19일
0

Java 기초

목록 보기
19/24

객체 배열

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

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

// 일반 데이터 형 배열의 경우
int[] data = new int[3];

// 객체 배열의 경우
Army[] data = new Army[3];	

각 경우에 대한 배열의 요소 할당 처리

  • 일반 데이터형은 단순히 값을 대입하지만, 객체 배열은 'new'를 사용해서 객체를 할당해야 한다.
// 일반 데이터 형 배열의 경우
data[0] = 1;
data[2] = 2;
data[3] = 3;
	
// 객체 배열의 경우
data[0] = new Army();
data[1] = new Army();
data[2] = new Army();

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

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

객체 배열의 활용

  • 일괄처리가 가능
    -> 서로 다른 객체를 부모 형태의 배열에 담게 되면, 반복문으로 일괄처리가 가능하다.
    -> 이 때 배열의 각 요소를 통해 사용하는 메서드가 Override되어 있을 경우, 부모의 메서드가 아니라 자신이 재정의한 기능을 뜻한다.
for( int i = 0; i<unit.length; i++ ){
	unit[i].attack();
}
  • 원래의 기능으로 복귀하기
    -> 배열의 각 요소가 확장한 기능을 사용하기 위해서는 원래의 클래스 형태로 명시적 형변환이 이루어 져야 한다.
    -> 하지만 반복적으로 처리되는 과정에서 몇 번째 요소가 어떤 클래스에서 최초 생성 되었는지를 판단하기란 쉽지 않다.

instanceof 연산자

  • instanceof 연산자는 어떤 객체에 대한 출처를 판단하여 boolean 형으로 결과를 반환한다.
    if( unit[0] instanceof Army ){
    	Army temp = (Army)unit[0];
    }

0개의 댓글