2013-03-16 13 views
5

Jeśli mam klasy strukturę jak tenstatyczne pola w wewnętrznych klas

public class Foo{ 
    //declaring fields and methods 


    Foo(int k){ 
     Bar.a = k; 
    } 
    public class Bar{ 
     public final static int a; 
    } 
} 

A jeśli utworzyć wiele instancji Foo, w jaki sposób pole statyczne w klasie Bar działa? Chodzi o to, że jest to ta sama instancja dla wszystkich obiektów Foo lub dla każdej instancji istnieje inne pole statyczne?

+1

Nie, wszystkie wystąpienia współużytkują to samo pole statyczne, dla każdego wystąpienia nie będzie pola statycznego. –

+0

zrozumiałe. Dzięki. – user2176737

+7

Twój kod się nie skompiluje. Niestatyczne klasy zagnieżdżone nie mogą zawierać pól statycznych. – Pshemo

Odpowiedz

4

Uważam, że klasa wewnętrzna nie może mieć statycznych elementów, ponieważ wymaga instancji klasy zewnętrznej.

0

Twoje pytanie jest nieprawidłowe. Po prostu nie ma sensu pytać o coś, co nie istnieje. Jedyną możliwością w tej sytuacji jest utworzenie klasy wewnętrznej static. Następnie dla każdej instancji klasy zewnętrznej mamy jedno statyczne wystąpienie klasy wewnętrznej. W rezultacie jedna zmienna statyczna tej wewnętrznej klasy.

1

Kod nie skompiluje, kompilator będzie emitować

COMPILATION ERROR : 
------------------------------------------------------------- 
... error: Illegal static declaration in inner class blah.Foo.Bar 
1 error 

Musisz mieć static wewnętrzną klasę Aby ten kod do kompilacji.

Powiązane problemy