[JAVA] 객체 배열 & instanceof
📝 객체 배열
- 일반 데이터 타입의 배열과 동일한 개념으로, 같은 클래스의 객체 여러 개를
그룹화 할 수 있다.- 동일한 클래스의 객체는 배열로 묶어서 여러 개를 한꺼번에 제어할 수 있다.
일반 데이터 형의 배열과 객체 배열 비교
- 생성
- 일반 데이터형의 배열
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();
- 일반 데이터 형은 단순히 값을 대입하지만,
객체 배열은 'new'를 사용하여 객체를 할당해야 한다.
객체 배열의 활용
- 부모 클래스의 배열에 자식 클래스의 객체 넣기
- 배열의 생성이 부모 클래스로 지정되었을 경우, 모든 자식 클래스의 객체들은
그 배열에 포함 될 수 있다.
Unit[] unit = new Unit[3];
// 배열의 요소 할당과정에서 암묵적 형변환이 이루어진다.
unit[0] = new Army();
unit[1] = new Navy();
unit[2] = new AirForce();
instanceof 연산자
- 객체 타입 확인하는 연산자
- 배열의 각 요소가 확장한 기능을 사용하기 위해서는 원래의 클래스 형태로
명시적 형변환이 이루어 져야 한다.
하지만 몇번째 요소가 어떤 클래스에서 최초로 생성되었는지 판단하기 어렵다.
- 이 경우 instanceof 연산자를 사용하면 어떤 객체에 대한 출처를 판단하여
boolean형으로 결과를 반환할 수 있다.
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호 >> 탱크공격
-----------------------------
Author And Source
이 문제에 관하여([JAVA] 객체 배열 & instanceof), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hyun_ha/JAVA-객체-배열-instanceof저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)