Odpowiedzi:
Tak, może. Jednak może istnieć tylko jedna publiczna klasa najwyższego poziomu na.java
pliku , a publiczne klasy najwyższego poziomu muszą mieć taką samą nazwę jak plik źródłowy.
Celem włączenia wielu klas do jednego pliku źródłowego jest spakowanie powiązanych funkcji wsparcia (wewnętrznych struktur danych, klas obsługi itp.) Wraz z główną klasą publiczną. Zauważ, że zawsze jest OK, aby tego nie robić - jedyny wpływ ma na czytelność (lub nie) kodu.
java.awt.LightweightDispatcher
?
Jeśli chcesz zaimplementować klasę publiczną, musisz zaimplementować ją w pliku o tej samej nazwie, co ta klasa. Pojedynczy plik może zawierać jedną klasę publiczną i opcjonalnie kilka klas prywatnych. Jest to przydatne, jeśli klasy są używane tylko wewnętrznie przez klasę publiczną. Ponadto klasa publiczna może również zawierać klasy wewnętrzne.
Chociaż dobrze jest mieć jedną lub więcej klas prywatnych w jednym pliku źródłowym, powiedziałbym, że bardziej czytelne jest użycie klas wewnętrznych i anonimowych. Na przykład można użyć klasy anonimowej do zdefiniowania klasy komparatora wewnątrz klasy publicznej:
public static Comparator MyComparator = new Comparator() {
public int compare(Object obj, Object anotherObj) {
}
};
Klasa Comparator zwykle wymaga oddzielnego pliku, aby była publiczna. W ten sposób jest dołączany do klasy, która go używa.
Plik .java nazywany jest jednostką kompilacji. Każda jednostka kompilacji może zawierać dowolną liczbę klas i interfejsów najwyższego poziomu. Jeśli nie ma publicznych typów najwyższego poziomu, jednostkę kompilacji można nazwać dowolną.
//Multiple.java
//preceding package and import statements
class MyClass{...}
interface Service{...}
...
//No public classes or interfaces
...
W jednostce kompilacji może istnieć tylko jedna klasa / interfejs publiczny. Cu należy nazwać dokładnie tak, jak ten publiczny typ najwyższego poziomu.
//Test.java
//named exactly as the public class Test
public class Test{...}
//!public class Operations{...}
interface Selector{...}
...
//Other non-public classes/interfaces
Ważne uwagi dotyczące głównej metody - część 1
(Punkty dotyczące liczby zajęć i ich poziomów dostępu omówiono w części 2)
Oprócz anonimowych klas wewnętrznych innym zastosowaniem są prywatne klasy wewnętrzne, które implementują interfejs publiczny ( zobacz ten artykuł ). Klasa zewnętrzna może uzyskać dostęp do wszystkich pól prywatnych i metod klasy wewnętrznej.
Pozwala to utworzyć dwie ściśle powiązane klasy, takie jak model i jego widok, bez ujawniania implementacji żadnej z nich. Innym przykładem jest kolekcja i jej iteratory.
Ogólnie w każdym pliku powinna znajdować się jedna klasa. Jeśli uporządkujesz rzeczy w ten sposób, to podczas wyszukiwania zajęć wiesz, że potrzebujesz tylko pliku o tej nazwie.
Wyjątkiem jest sytuacja, gdy klasa jest najlepiej zaimplementowana przy użyciu jednej lub kilku małych klas pomocniczych. Zwykle kod jest najłatwiejszy do śledzenia, gdy te klasy znajdują się w tym samym pliku. Na przykład możesz potrzebować małej klasy opakowującej „krotka”, aby przekazywać dane między wywołaniami metod. Innym przykładem są klasy „task” implementujące Runnable lub Callable. Mogą być tak małe, że najlepiej połączyć je z klasą nadrzędną, która je tworzy i nazywa.
Tak 200% ,
Przykład:
class A {
void methodDeclaration() { System.out.println("!!!"); }
}
class B {
public static void main(String[] args) {
new A().methodDeclaration();
}
}
Tak, może, ale w każdym pakiecie może znajdować się tylko 1 klasa publiczna, ponieważ kompilator java tworzy plik .Class, który ma taką samą nazwę jak nazwa klasy publicznej, dlatego jeśli ich jest więcej niż 1 klasa publiczna, trudno byłoby wybrać kompilator, który powinien mieć nazwę pliku klasy.
Różni się ... Jednym z takich przykładów byłyby klasy anonimowe (wiele z nich można spotkać podczas korzystania z detektorów zdarzeń itp .).
Myślę, że powinno być „może istnieć tylko jedna NIESTATYCZNA klasa publiczna najwyższego poziomu na plik .java”. Prawda?
Jeśli chcesz zaimplementować singleton, czyli klasę, która działa w twoim programie z tylko jednym wystąpieniem w pamięci podczas wykonywania aplikacji, to jednym ze sposobów implementacji singletona jest zagnieżdżenie prywatnej klasy statycznej wewnątrz klasy publicznej . Następnie wewnętrzna klasa prywatna tworzy instancję tylko wtedy, gdy wywoływana jest jej publiczna metoda dostępu do instancji prywatnej.
Przeczytaj ten artykuł na wiki,
https://en.wikipedia.org/wiki/Singleton_pattern
Koncepcja zajmuje trochę czasu.
W pliku .java może istnieć tylko jedna publiczna klasa najwyższego poziomu, której nazwa jest taka sama jak plik, ale może istnieć kilka publicznych klas wewnętrznych, które można wyeksportować do wszystkich i uzyskać na przykład dostęp do pól / metod klasy zewnętrznej : AlertDialog.Builder (zmodyfikowany przez „public static”) w AlertDialog (zmodyfikowany przez „public”)
Tak Możesz mieć więcej niż jedną klasę w jednym pliku .Java. Ale jeden z nich został opublikowany. i zapisz plik .java o tej samej nazwie, co nazwa klasy publicznej. kiedy będziesz kompilować ten plik .java, otrzymasz oddzielne pliki .class dla każdej klasy zdefiniowanej w pliku .java.
Poza tym istnieje zbyt wiele metod definiowania więcej niż jednej klasy w jednym pliku .java.
Tak ! Plik .java może zawierać tylko jedną klasę publiczną.
Jeśli chcesz, aby te dwie klasy były publiczne, należy je umieścić w dwóch plikach .java: A.java i B.java.
Tak, możesz mieć więcej niż jedną klasę w pliku .java. Co najwyżej jeden z nich może być publiczny. Pozostałe są pakietami prywatnymi. NIE MOGĄ być prywatne ani chronione. Jeśli jeden jest publiczny, plik musi mieć nazwę tej klasy. W przeciwnym razie WSZYSTKO może być nadane temu plikowi jako jego nazwę.
Posiadanie wielu klas w jednym pliku oznacza, że znajdują się one w tym samym pakiecie. Zatem wszystkie inne klasy, które znajdują się w tym pakiecie, ale nie znajdują się w tym pliku, również mogą korzystać z tych klas. Co więcej, gdy ten pakiet jest importowany, klasa importująca również może z nich korzystać.
Aby uzyskać bardziej szczegółowe dochodzenie, możesz odwiedzić mój wpis na blogu tutaj .
W pliku może znajdować się tylko jedna klasa publiczna najwyższego poziomu . Nazwa klasy tej klasy publicznej powinna być nazwą pliku. Może mieć wiele publicznych klas wewnętrznych.
Możesz mieć wiele klas w jednym pliku. Limity dla różnych poziomów widoczności klas w pliku są następujące:
Klasy na najwyższym poziomie:
1 publiczna klasa
0 prywatna
dowolna liczba klas domyślnych / chronionych
Klasy wewnętrzne:
dowolna liczba klas wewnętrznych z dowolną widocznością (domyślna, prywatna, chroniona, publiczna)
Proszę, popraw mnie jeśli się mylę.
Tak, może. Jednak w jednym pliku .java może istnieć tylko jedna klasa publiczna, ponieważ klasy publiczne muszą mieć taką samą nazwę jak plik źródłowy.