java - 从抽象对象列表中调用非抽象方法
问题描述
我有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.
}
}
解决方案
这与抽象无关。(setRadius
甚至不是抽象方法)。
componentList
是一个 ArrayList,而不是具有方法的ItemA
实例setRadius
。
你想要((ItemA) componentList.get(0)).setRadius(50)
吗?
或者更清洁...
ItemA a = new ItemA(25, 10);
a.setRadius(50);
componentList.add(a);
推荐阅读
- apache-kafka - Kafka 分区中的时间戳序列
- python - 列表操作中的 Python 列表
- javascript - 如何更改 vscode 的活动文本编辑器?
- python - 如何将 mark_geoshape 缩放到 Altair 中的特定区域?
- javascript - 使用 javascript 打印动态代码,该代码根据参数添加了一个方法
- python - 如果使用 Python 从负值变为正值,则在列表中查找连续值的索引
- java - 获取每个数组中不存在的元素
- javascript - 基于其他总计 Vanilla JavaScript 计算总计
- java - 将 Mat 对象转换为 Float32[1,66,200,3] android studio
- javascript - 未使用 process.exit() 从节点连接到 sqlite db