[英]Referencing instance variables from within abstract class
我有一个抽象类,它列出了它的每个子类应该实现的内容。 大多数方法对每个子类都有不同的实现,但有些方法对所有方法都是相同的。 我希望在抽象类中定义相同的方法,这样我就不会将相同的方法粘贴到几个不同的类中。 但是,当我在抽象的子类的实例上调用该方法时,我收到一个空指针,因为我想,抽象类中实现的方法引用的是抽象的字段,而不是实例的字段。
有人能指出缺陷在哪里吗?
例如:
abstract class ControlView {
String[] controls;
abstract void render();
void release() {
for (int i = 0; i <= controls.length; i++) {
//Release the controls
}
}
}
class StartingControls extends ControlView{
String[] controls;
Button uiDrawButton;
Button uiLoadButton;
StartingControls() {
this.controls = new String[2];
uiDrawButton = new Button();
this.controls[0] = uiDrawButton;
uiLoadButton = new Button();
this.controls[1] = uiLoadButton;
}
public void render() {
//Unique Render implementation
}
}
当我打电话
instanceOfStartingControls.release();
显然,我想遍历在构造 instanceOfStartingControls 的控件字段中放入的两个字符串。 我不想遍历未初始化数组,显然生活在抽象的。
是访问修饰符或静态方法的某种组合使其无法正常工作,还是我错过了一些关于抽象类的关键知识? 这感觉像是一个基本问题,但我很难用文字表达出来,所以我对搜索的任何结果都不满意。
有两个数组称为controls
。 派生类中的一个隐藏了基类中的一个,因此基实例永远不会设置为非空。
从派生类中删除声明。
这个问题与abstract
的基础无关。 如果在派生类中使用与基类中相同的字段名称,则基实例将被遮挡。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.