🎯 목표 : Instance(객체) 의 배열을 이해
📒 객체의 배열
❗특징
- 객체도 하나의 데이터 타입으로 배열로 다룰수 있다.
- 객체 배열 생성후 배열 값을 초기화 해야한다.(=배열에 담을 객체를 초기화)
📌 예제
class Product {
double price;
double dcrate;
double dcprice;
}
class Tv extends Product {
public String toString() {
return "TV";
}
}
class SmartTv extends Product {
public String toString() {
return "SmartTV";
}
}
class Desktop extends Product {
public String toString() {
return "DeskTop";
}
}
class Notebook extends Product {
public String toString() {
return "NoteBook";
}
}
public class MartApp {
public static void main(String[] args) {
Product[] p = new Product[4];
for (int i = 0; i < p.length; i++) {
System.out.println("arrayProduct["+i+"] = " + p[i]);
}
// p[0].price = 50000; Error NullPointerException
System.out.println("=====================");
p[0] = new Tv();
for (int i = 0; i < p.length; i++) {
System.out.println("arrayProduct["+i+"] = " + p[i]);
}
}
}
========== 출력값 =============
arrayProduct[0] = null < 배열 초기화 전
arrayProduct[1] = null
arrayProduct[2] = null
arrayProduct[3] = null
=====================
arrayProduct[0] = TV <p[0] 객체 생성후(new Tv();)
arrayProduct[1] = null
arrayProduct[2] = null
arrayProduct[3] = null
- 부모 클래스 Parents 와 상속받은 클래스 Tv, SmartTv, Desktop, Notebook이 있다.
- main 메소드에서 Product 타입 객체 배열을 선언하고 배열 값을 보기위해 for 문으로 출력하였다.
- Tv의 객체 생성 이전에는 배열의 값이 모두 null인것을 확인할수 있는데, 배열 p[0]로 Parents 변수의 값을 정의하기위해 아래 코드를 시도하게 되면 NullPointerException 에러가 발생한다.(main 메소드의 주석처리 부분)
p[0].price = 50000;
- NullPointerException 에러가 발생하므로 객체 배열을 선언하여 null 값으로 출력되더라도 배열값이 정의된것은 아니라는걸 알수 있다.
- 아래 코드로 배열 p[0] 에 Tv의 객체를 초기화 하였다.
p[0] = new Tv();
- 배열 p[0]에 객체를 초기화 후 출력값을 보면, p[0]의 값이 Tv로 출력되는것을 확인 할수 있다.
- 객체 초기화 이후에 위에서 에러가 발생했던 코드를 입력하게 되면 정상적으로 실행되는것을 확인할수 있다.
👉 부모 클래스 타입의 객체 배열을 생성하여 자식 클래스를 객체 배열에 정의할수 있다.
👉 객체 배열은 생성후 배열값을 초기화 하여야한다.
'Language > JAVA' 카테고리의 다른 글
| Java 내부클래스와 익명클래스 - OOP (0) | 2022.08.26 |
|---|---|
| Java Interface의 다형성 - OOP_추상화 (0) | 2022.08.24 |
| Java 매개변수의 다형성 - OOP_다형성 (0) | 2022.08.23 |
| JAVA instanceof 연산자 - OOP_다형성 (0) | 2022.08.23 |
| JAVA 참조변수의 형변환 - OOP_다형성 (0) | 2022.08.23 |