如何从匿名InnerClass调用externalClass的父级中的成员变量

时间:2019-06-07 16:39:12

标签: java inheritance anonymous-inner-class

我有 OuterClass 扩展了 ParentClass
我试图覆盖 OuterClass ParentClass 匿名InnerClass ,而我想做的就是调用的成员变量匿名内部类中的ParentClass
这是我的代码:

class ParentClass {
    int a;
    Runnable act;
    ParentClass() {
        act = new Runnable() {
            void run() {
                //codes
            }
        }
    }
}

class OuterClass extends ParentClass {
    OuterClass() {
        super();
        super.act = new Runnable() {
            void run() {
                // I want to call 'int a' here!!!
            }
        }
    }
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这可能为您解决问题:

class ParentClass {
    protected int a;
    protected Runnable act;
    ParentClass() {
        act = new Runnable() {
            void run() {
                //codes
            }
        }
    }
}

class OuterClass extends ParentClass {
    OuterClass() {
        super();
        super.act = new RunnableClass (a);
    }
}

class RunnableClass implements Runnable {
    private int a;
    public RunnableClass(int a) {
        this.a = a;
    }

    public void run() { //--- the code here
    }

}

我不确定使用protected是否是您的最佳访问权限,但是我的目标是让您自由创建自己的Runnable,并提供所需的一切。 / p>