🔎 일반 데이터 타입의 배열과 동일한 개념으로, 같은 클래스의 객체 여러 개를 그룹화 할 수 있다.
<일반 데이터 형 배열의 경우>
int data= = new int[3]; Army[] data = new Army[3];
🔎 일반 데이터형은 단순히 값을 대입하지만,객체 배열은 new키워드를 사용하여 객체를 할당해야 한다.
< 일반 데이터형 배열 >
data[0] = 1; data[1] = 2; data[3] = 19;
< 객체 배열 >
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 연산자는 어떤 객체에 대한 출처를 판단하여 boolean형으로 결과를 반환한다.
if ( unit[0] instanceof Army){ Army temp = (Army)unit[0]; // 명시적 형변환 temp.tank(); // 기존 기능 }
명시적 형변환을 통해 원래 기능을 사용할 수 있게됨
예제)
<클래스>
<메인>