Widziałem, że klasa została zadeklarowana jako static
w java
, ale jest zdezorientowana:
Ponieważ klasa służy do tworzenia obiektów, a różne obiekty mają różne przydziały pamięci.
To, co jest "static"
używane podczas deklarowania klasy? Czy to oznacza, że member variables
są wszystkie static
?
Czy to ma sens?Dlaczego klasa jest zadeklarowana jako statyczna w Javie?
Odpowiedz
Po pierwsze nie można utworzyć statycznego poziomu najwyższego poziomu. możesz zagnieździć tylko klasę zagnieżdżoną. Tworząc zagnieżdżoną klasę statyczną, zasadniczo mówisz, że nie potrzebujesz instancji klasy zagnieżdżonej, aby użyć jej z zewnętrznej klasy/najwyższego poziomu klasy.
przykład:
class Outer {
static class nestedStaticClass {
//its member variables and methods (don't nessarily need to be static)
//but cannot access members of the enclosing class
}
public void OuterMethod(){
//can access members of nestedStaticClass w/o an instance
}
}
także dodać, jest nielegalne zadeklarować pola statycznego wewnątrz wewnętrznej grupy, o ile nie są stałe (innymi słowy, static final
). Ponieważ statyczna klasa zagnieżdżona nie jest klasą wewnętrzną, możesz deklarować statyczne elementy tutaj.
Czy klasa może być zagnieżdżona w klasie zagnieżdżonej?
Jednym słowem, tak. Spójrz na poniższe: Test
, obie zagnieżdżone klasy wewnętrzne i zagnieżdżone klasy statyczne mogą mieć klasy zagnieżdżone w 'em. Ale pamiętaj, że możesz zadeklarować tylko klasę statyczną w klasie najwyższego poziomu, nie można jej deklarować wewnątrz klasy wewnętrznej.
public class Test {
public class Inner1 {
public class Inner2 {
public class Inner3 {
}
}
}
public static class nested1 {
public static class nested2 {
public static class nested3 {
}
}
}
}
Wewnętrzna klasa nie jest statyczna z definicji. – assylias
@assylias true .. :), edytowane – PermGenError
@ PermGenError, więc najwyżej są dwa poziomy. – Al2O3
Zagnieżdżone klasy (klasa w klasie) są jedynymi, które można zadeklarować statycznie. W ten sposób klasa nadrzędna nie musi być instancjonowana, aby uzyskać dostęp do zagnieżdżonej klasy.
Jest jakiś dobry przykład kodu w this answer
To po prostu opisuje relację z tej klasy zawierającej klasy.
Klasy wewnętrzne to klasy zdefiniowane w ramach innej klasy. Wystąpienia klas wewnętrznych są dołączane do określonej instancji klasy kontenera (instancji, w której zostały utworzone).
Statyczne klasy zagnieżdżone są klasami zagnieżdżonymi, ale są zdefiniowane jako statyczne. Podobnie jak statyczni członkowie nie mają związku z konkretną instancją; po prostu należą do klasy zawierającej. W klasach zagnieżdżonych nie można odwoływać się do niestatycznych elementów/metod klasy zawierającej, ponieważ nie ma z nimi żadnej konkretnej instancji.
- 1. Dlaczego usługa WebMethod została zadeklarowana jako statyczna?
- 2. Dlaczego klasa losowa nie jest statyczna?
- 3. Dlaczego klasa System.Random nie jest statyczna?
- 4. Statyczna Główna klasa - AS3
- 5. Repozytorium jako klasa statyczna lub niestatyczna?
- 6. statyczna klasa w maszynopisie
- 7. Klasa statyczna w Javie (Android) - użyj lub nie używaj
- 8. Wewnętrzna klasa w Javie
- 9. Dlaczego funkcja inline musi być zadeklarowana jako statyczna, jeśli używa fprintf?
- 10. Dlaczego format String (Object ... args) jest zdefiniowany jako metoda statyczna?
- 11. java klasa statyczna/zmienne
- 12. Brak ostrzeżenia lub wskazanie błędu, gdy zmienna zdefiniowana jako statyczna, ale zadeklarowana jako zewnętrzna
- 13. Zrozumienie statyczna zmienna inicjalizacji w Javie
- 14. Dlaczego we wzorcu ViewHolder klasa ViewHolder powinna być statyczna?
- 15. Dlaczego funkcja statycznego elementu może być zadeklarowana jako statyczna w definicji klasy, a nie w jej własnej definicji?
- 16. Co to jest klasa równorzędna w Javie?
- 17. Jak sprawić, by moja klasa statyczna nie była tak statyczna?
- 18. Dlaczego funkcja CompletableFuture.allOf została zadeklarowana jako CompletableFuture <Void>?
- 19. Dlaczego moja biblioteka statyczna jest tak ogromna?
- 20. Blokada statyczna nie jest wywoływana
- 21. Kosz na śmieci i klasa statyczna, zmienna
- 22. Czy moja klasa sesji powinna być statyczna?
- 23. Statyczna klasa sesji i wielu użytkowników
- 24. Sprawdź, czy klasa jest podklasą innej klasy w Javie
- 25. Dlaczego klasa String jest ostateczna?
- 26. Dlaczego moja klasa nie jest akceptowalna
- 27. Python zestaw statyczna właściwość klasa/dostać
- 28. Jak sprawdzić, czy metoda jest statyczna w PHP?
- 29. Dlaczego klasa StringBuilder jest zamknięta?
- 30. Dlaczego ta statyczna zmienna końcowa jest bezpieczna dla pojedynczego wątku?
Zobacz [tę odpowiedź] (http://stackoverflow.com/a/3584151/545637). – Apalala