Java嵌套内部类访问外部类变量

2024-04-14

嵌套内部类ABar和BBar是否可以访问主类的变量?例如:

public class Foo {
    public ABar abar = new ABar();
    public BBar bbar = new BBar();
    public int someCounter = 0;

    public class ABar {
        public int i = 0;
        public void someMethod(){
            i++;
            someCounter++;
        }
    }

    public class BBar {
        public void anotherMethod(){
            bbar.someMethod();
            someCounter++;
        }
    }
}
// then called using: //
Foo myFoo = new Foo();
myFoo.bbar.anotherMethod();

Edit

如果我先尝试一下,我输入的代码似乎会起作用;试图获得帮助但又不太具体。我实际上遇到问题的代码

由于错误“无法对非静态字段阶段进行静态引用”而失败

public class Engine {
    public Stage stage = new Stage();
        // ...
    public class Renderer implements GLSurfaceView.Renderer {
        // ...
        @Override
        public void onDrawFrame(GL10 gl) {
            stage.alpha++;
        }
    }

    public class Stage extends MovieClip {
        public float alpha = 0f;
    }

在你的代码中,是的,这是可能的。

非静态嵌套类(内部类)可以访问其他成员 封闭类的属性,即使它们被声明为私有。静止的 嵌套类无法访问封闭类的其他成员 班级。

See: 嵌套类 http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java嵌套内部类访问外部类变量 的相关文章

随机推荐