繁体   English   中英

从抽象类中引用实例变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM