객체 배열

김현·2023년 7월 18일

자바

목록 보기
20/31

1. 객체 배열

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

int[] jdata = new int[3];
Army[] data = new Army[3];

  • 각 경우에 대한 배열의 요소 할당 처리
    -> 일반 데이터 형은 단순히 값을 대입하지만 객체 배열은 'new'를 사용하여 객체를 할당한다.

    	data[0] = 1;
    	data[1] = 2;
    	...
    	data[n]= n+1;
    	-------------
    	data[0] = new Army();
    	data[1] = new Army();
    	...

2. 정리

  • 객체 형변화
    -> 같은 부모 클래스에서 파생된 서로 다른 자식 클래스의 객체들은 부모 형태로 암묵적 형변환 되어 일관된 형식으로 사용 가능하다.
  • 객체 배열
    -> 동일한 클래스의 객체는 배열로 묶어서 여러 개를 한꺼번에 제어할 수 있다.

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

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

4. 객체 배열의 활용

  • 일괄 처리가 가능하다.

  • 서로 다른 객체를 부모 형태의 배열에 담기게 되면 반복문으로 일괄처리가 가능하다.

  • 이 때 배열의 각 요소를 통해 사용하는 메서드가 Override 되어 있을 경우 부모의 메서드가 아니라 자신이 재정의한 기능을 뜻한다.

    	for(int i = 0; i<unit.length; i++) {
    		unit[i].attack();
    	}

-> 위에 배열을 이용하여 반복문으로 일괄처리한 결과

5. 원래 기능으로 복귀하기

  • 배열의 각 요소가 확장한 기능을 사용하기 위해서는 원래의 클래스 형태로 명시적 형변환이 이루어 져야 한다.

  • 하지만 반복적으로 처리되는 과정에서 몇 번째 요소가 어떤 클래스에서 최초 생성되었는지를 판단하기란 쉽지 않다.

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

    	if(unit[0] instanceof Army) {
    		Army temp = (Army)unit[0];
    	}

-> 위에 일괄처리와 다르게 각 군대의 따라 자기 차례의 무슨 공격을 하는지 확인 할 수 있다.

0개의 댓글