다른 클래스의 객체를 저장할 수있는 "인벤토리"라는 배열을 만들고 싶습니다. (무기, 병, 음식 등)하나의 배열에 다른 유형의 객체를 저장하여 객체 배열 만들기
나는 이것이 가능한 방법을 알고 싶습니다 ... arraylist는 한 종류의 배열 만 만들 수 있습니다 ... 나는 그것을 시도했습니다. 사전에
감사합니다.
다른 클래스의 객체를 저장할 수있는 "인벤토리"라는 배열을 만들고 싶습니다. (무기, 병, 음식 등)하나의 배열에 다른 유형의 객체를 저장하여 객체 배열 만들기
나는 이것이 가능한 방법을 알고 싶습니다 ... arraylist는 한 종류의 배열 만 만들 수 있습니다 ... 나는 그것을 시도했습니다. 사전에
감사합니다.
개체가 Item
과 같은 수퍼 클래스를 확장하고 Item[]
배열로 만듭니다.
일반적인 수퍼 클래스/인터페이스의 배열을 사용해야합니다.
가장 쉬운 방법은 Object (Object [])의 배열을 사용하는 것이지만, 문자 그대로 아무것도 추가 할 위험이 있습니다.
태그 인터페이스가되어야하는 경우라도 모든 개체가 구현할 인터페이스를 만드는 것이 가장 좋으므로 거기에 넣을 수있는 것보다 많은 종류의 개체를 제한해야합니다. 물론 이러한 객체의 일반적인 기능 (예 : "가중치"또는 "drawObject"와 같은 속성)이있는 경우 인터페이스는 실제로 태그를 넘어서는 의미를 갖습니다.
감사합니다. 마술처럼 작동합니다 ... –
모든 클래스의 항목을 동일하게 구현 했습니까? 인터페이스, "항목". 그런 다음 arrylist를 Item
으로 만드십시오.
또는 항목에 공통 데이터 (예 : 가격)가있는 경우 모두 동일한 클래스를 확장 할 수 있습니다.
같은 추상 클래스를 확장예 :
public abstract class Item {
private int value;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
public class Weapon extends Item {
private int damage;
public Weapon(int value, int damage) {
this.setValue(value);
this.damage = damage;
}
}
ArrayList
선언 :
List<Item> inventory = new ArrayList<Item>();
inventory.add(new Weapon(10, 25));
수업 (그들은 하나 개의 공통 클래스를 확장하는 경우 또는), 당신은 배열을 선언 할 수있다 하나의 공통 인터페이스를 구현하는 경우 이 공통 클래스/인터페이스의 그렇지 않으면 Object가 대답입니다. – ferjani
모든 항목이 모든 항목에 고유 한 메소드를 정의하는 수퍼 클래스 (아마도'Item', 아마도)를 확장하도록합니다. 아이템의 각 타입이'Item'을 확장하기 때문에,'List- ' 또는'Item []'을 사용하여 모든 아이템을 저장할 수 있습니다. –
필요한 경우 Object []를 사용할 수 있습니다. 제 추천은 '아이템'이라고 불리는 1 개의 아이템 클래스를 만드는 것입니다. 그런 다음 다른 클래스를 확장 할 수 있습니다. 그런 다음'Item []'을 만드십시오. – CaffeineToCode