본문 바로가기

Java

배열로 객체관리하기

class Car{

Tire frontLeftTire = new Tire();

Tire frontRightTire = new Tire();

Tire backLeftTire = new Tire();

Tire backRightTire = new Tire();

void run(){.....}

}


기억나는가 바로 밑에 글에서 한 코드다 같은 타입의 객체를 4개만드는 내용인데..

옛날에 배열배울때 기억나는가 같은 타입이라면 배열로 관리하면 짧고 빠르다는것을.

위의 코드를 배열로 만들어서 관리해보자.

class Car{                                                                        class Car{

Tire forntLeftTire = new Tire("앞왼쪽",6);                                    Tire[] tires = {

Tire forntRightTire = new Tire("앞오른쪽",2);                                        new Tire("앞왼쪽",6),

Tire backLeftTire = new Tire("뒤왼쪽",3);                                             new Tire("앞오른쪽",2),

Tire backRightTire = new Tire("뒤오른쪽",4);                                        new Tire("뒤왼쪽",3),

}                                                                                                new Tire("뒤오른쪽",4)

};

}

왼쪽방식으로 객체를 만들고 매개변수로 위치와 성능값을 주었다고 할때 같은 타입을 배열로 묶어서 오른쪽과같은 모양으로 만들수 있다. 이렇게 될 경우

forntLeftTire >> tiers[0]

forntRightTire >> tiers[1]

backLeftTire >> tiers[2]

backRightTire >> tiers[3]

으로 필드명이 인덱스로 변경된다. 일일이 필드명을 쓰는것보다 간단해진다.

이상태에서 타이어를 교체하고 싶다면??


tires[0] = new HankookTire("앞왼쪽", 15);  << 이런 식으로 교체해주는것이 가능하다.

배열의 타입은 Tire 이므로 자연스럽게 자동타입변환이 이루어진다. 배열의 타입은 Tire이기 때문에 당연히 Tire class를 상속받는 자식클래스는 대입이 가능하다.

Car class 의 run()메소드를 보자

지난번의 Run메소드의 경우 각각의 필드를 적고 메소드를 호출하는 방식이였다. 

void run(){

forntLeftTire.roll();

forntRightTire.roll();

backLeftTire.roll();

backRightTire.roll();

}

배열로 한다면??

void run(){

for(int i=0; i<tires.length; i++){

tires[i].roll();

}

}

정도가 될것이다. 짧고 간결한 내용으로 실행이 가능하다. 

'Java' 카테고리의 다른 글

강제타입변환 Casting 및 몇가지  (0) 2018.12.22
매개변수의 다형성  (0) 2018.12.21
자동타입변환2 필드의 당형성  (0) 2018.12.21
자동타입변환(Promotion)  (0) 2018.12.20
타입변환. 다형성  (0) 2018.12.20