2012-08-20 15 views
9

ABar ve BBar iç içe iç sınıflarının ana sınıf değişkenlerine erişmesi mümkün mü? Örneğin:Java iç içe erişim sınıfı dış sınıf değişkenleri

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(); 

Düzenleme

i ilk denedim edersen yazdığınız kodu işe yarardı görünüyor; çok spesifik olmadan yardım almaya çalışıyordu.

ile aslında sorun yaşıyorum kod Kodunuzda

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; 
    } 
+12

Denediniz mi? –

+1

http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html –

+0

Tam olarak yazdığım gibi denemedim, çünkü projem android tabanlı - aynı mantık, çalışmıyor (hayır Foo) Foo.this.i ++ 'nın örnek örneği – TerryProbert

cevap

18

'statik olmayan alan aşamasına statik başvuru yapamaz' hatası nedeniyle başarısız, evet, bu mümkündür.

Olmayan statik yuvalanmış sınıfları (iç sınıflar) onlar özel ilan bile, kapsayan sınıfın diğer üyeleri erişebilir. Statik iç içe geçmiş sınıflar, çevreleyen sınıfının diğer üyelerine erişemez.

Bkz: Nested Classes

+3

yapmaktan ziyade oracle sitesinin bağlantısını eklemeniz gerekir. Doğrudan teklifleri kullanacaklar. http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html –

0

iç sınıf dış sınıfını genişletir, o zaman dış sınıf kamu ve korumalı üyelerine erişebilir. Sadece yoruldum ve işe yaradı. Yapı biraz garip, çünkü sınıf tanımında bir çeşit sonsuz döngü anlamına geliyor, ancak işi yapıyor gibi görünüyor.

İlgili konular