10

ネストされた内部クラス 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();

編集

入力したコードは、最初に試していればうまくいったようです。具体的になりすぎずに助けを得ようとしていました。私が実際に問題を抱えているコード

「非静的フィールド ステージへの静的参照を作成できません」というエラーが原因で失敗する

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;
    }
4

2 に答える 2

19

あなたのコードでは、はい、可能です。

入れ子になった非静的クラス (内部クラス) は、プライベートと宣言されていても、囲んでいるクラスの他のメンバーにアクセスできます。入れ子になった静的クラスは、囲んでいるクラスの他のメンバーにアクセスできません。

参照:ネストされたクラス

于 2012-08-20T17:57:31.980 に答える
0

内部クラスが外部クラスを拡張する場合、外部クラスの public および protected メンバーにアクセスできます。疲れただけでうまくいきました。この構成は、クラス定義で一種の無限ループを暗示しているため、少し奇妙ですが、機能しているように見えます。

于 2013-12-20T21:54:55.310 に答える