首页 > 解决方案 > 从抽象对象列表中调用非抽象方法

问题描述

我有5节课。我有构造我的对象的域类。我有一个名为“组件”的抽象类,它有一些抽象方法,一些不是抽象的。我有 3 个实现 Component 的类“ItemA”、“ItemB”、“ItemC”。

示例代码


public abstract class Component {
    protected string name;

    public abstract double getVolume();
//Getter and setter for name
}

public class ItemA extends Component {
    private double radius;
    private double height;

    public double getVolume() {
        return pi * radius * radius * height;
    }

    public void setRadius(int p_radius) {
        this.radius = p_radius;
    }
}

public class domain {
    ArrayList<Component> componentList = new ArrayList<Component>();

    public void domain() {
        componentList.add(new ItemA(25, 10));
        componentList.setRadius(50); <<<<Says it doesn 't know what to do that.
    }
}

标签: java

解决方案


这与抽象无关。(setRadius甚至不是抽象方法)。

componentList是一个 ArrayList,而不是具有方法的ItemA实例setRadius

你想要((ItemA) componentList.get(0)).setRadius(50)吗?

或者更清洁...

ItemA a = new ItemA(25, 10);
a.setRadius(50);
componentList.add(a);

推荐阅读