📝 객체 배열
- 일반 데이터 타입의 배열과 동일한 개념으로, 같은 클래스의 객체 여러 개를
그룹화 할 수 있다.- 동일한 클래스의 객체는 배열로 묶어서 여러 개를 한꺼번에 제어할 수 있다.
- 일반 데이터형의 배열
int[] data = new int[3];
- 객체 배열의 경우
Army[] data = new army[3];
- 일반 데이터 형 배열의 경우
data[0] = 10;
data[1] = 20;
data[2] = 35;
- 객체 배열의 경우
Army a1 = new Army();
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();
class Parent{}
class Child extends Parent{}
public class Main {
public static void main(String[] args) {
Parent p = new Parent();
Child c = new Child();
System.out.println(p instanceof Parent);
System.out.println(p instanceof Child);
System.out.println(c instanceof Parent);
System.out.println(c instanceof Child);
}
}
👉 실행 결과
true
false
true
true
✍ 객체 배열 & instanceof 코드 예시) - <객체 형변환 글에 있는 코드 참고>
public class Main {
public static void main(String[] args) {
// 부대지정
Unit[] units = new Unit[5];
units[0] = new AirForce("공군1호");
units[1] = new AirForce("공군2호");
units[2] = new Navy("해군1호");
units[3] = new Army("육군1호");
units[4] = new Army("육군2호");
// 부대 일괄 공격 attak();
for (int i = 0; i < units.length; i++) {
units[i].attack();
// 각 기능의 고유한 기능 호출
if (units[i] instanceof Army) {
Army temp1 = (Army)units[i];
temp1.tank();
}
if (units[i] instanceof Navy) {
Navy temp2 = (Navy)units[i];
temp2.nucleus();
}
if (units[i] instanceof AirForce) {
AirForce temp3 = (AirForce)units[i];
temp3.bombing();
}
System.out.println("-----------------------------");
}
}
}
👉 실행 결과
공군1호 >>> 공격준비
공군1호 >> 이륙
공군1호 >> 공중공격 실행
공군1호 >> 폭격
-----------------------------
공군2호 >>> 공격준비
공군2호 >> 이륙
공군2호 >> 공중공격 실행
공군2호 >> 폭격
-----------------------------
해군1호 >>> 공격준비
해군1호 >> 어뢰발사
해군1호 >> 지상 상륙
해군1호 >> 핵미사일
-----------------------------
육군1호 >>> 공격준비
육군1호 >> 지상공격 실행
육군1호 >> 탱크공격
-----------------------------
육군2호 >>> 공격준비
육군2호 >> 지상공격 실행
육군2호 >> 탱크공격
-----------------------------