首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java如何将子类对象添加到另一个类中的ArrayList

java如何将子类对象添加到另一个类中的ArrayList
EN

Stack Overflow用户
提问于 2013-06-10 09:19:32
回答 2查看 823关注 0票数 0

我正在尝试学习如何在一个类项目中使用继承,制作一个游戏。他们的名字很傻,抱歉。我有一个抽象类Cabbages,以及它的一个子类GoodCabbages。在子类中,我基本上做了一个椭圆形。

在Cabbages类中有一个抽象的draw()方法。我在GoodCabbages子类中实现了它,如下所示:

代码语言:javascript
复制
public void draw(){
    int x = (int) (Math.random() * (GARDEN_WIDTH - CABBAGE_RADIUS));
    int y = (int) (Math.random() * (GARDEN_HEIGHT - CABBAGE_RADIUS));
    Oval o = new Oval(x, y, CABBAGE_RADIUS, CABBAGE_RADIUS, Color.WHITE, true);
    window.add(o);
}

我需要将这些椭圆添加到另一个类的ArrayList中,以便稍后使用,但我不知道如何做到这一点。

代码语言:javascript
复制
N_GOOD_CABBAGES = 10 //in a separate interface

for(int j = 0; j < N_GOOD_CABBAGES; j++){
    Cabbage good = new Cabbage().draw();
    cabbages.add(j, Cabbage.draw());
}

希望这是足够的信息。谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2013-06-10 09:27:19

您需要A)创建一个返回椭圆ArrayList的方法,或者B)在您的类中创建一个公共变量。

a)

代码语言:javascript
复制
public List<Oval> getOvals() {
    List<Oval> lis = new ArrayList<Oval>();
    //for loop code here
    return lis;
}

b)

代码语言:javascript
复制
public class MyClass {
    public List<Oval> lis = new ArrayList<Oval>();

    private void myfunc() {
        //add to list here...
    }
}

无论哪种方式,这真的与继承无关。无论你有好的卷心菜还是坏的卷心菜,椭圆形总是椭圆形的。

编辑:还有,良好的Java实践:不要引用ArrayLists (或LinkedLists或HashLists...)。只要使用List接口即可。它使它更加通用,并且不会花费您任何东西。

EDIT2:类型问题。列表发送给编译器。将您的代码更改为:

代码语言:javascript
复制
N_GOOD_CABBAGES = 10 //in a separate interface

for(int j = 0; j < N_GOOD_CABBAGES; j++){
    Cabbage good = new Cabbage(); //Cabbage(), not Cabbage().draw()
    cabbages.add(j, good.draw()); //good.draw() not Cabbage.draw(), that's an abstract function
}
票数 0
EN

Stack Overflow用户

发布于 2013-06-10 09:27:59

你是说像这样的东西吗?

代码语言:javascript
复制
List<Cabbage> = new ArrayList<Cabbage>(); 
    // an arraylist that holds cabbages (good or otherwise)

N_GOOD_CABBAGES = 10 //in a separate interface

for(int j = 0; j < N_GOOD_CABBAGES; j++){
    Cabbage good = new GoodCabbage(); // make a good cabbage
    cabbages.add(good); // add it to the list
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17015769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档