![translation](https://cdn.durumis.com/common/trans.png)
To jest post przetłumaczony przez AI.
Wybierz język
Tekst podsumowany przez sztuczną inteligencję durumis
- Podczas tworzenia klasy pomocniczej, która zawiera tylko metody statyczne i pola, konstruktor powinien być prywatny, aby zapobiec tworzeniu instancji.
- Zapewnia to, że nikt nie będzie mógł wywołać konstruktora z zewnątrz klasy, a także pozwala na jawne sterowanie publicznym konstruktorem domyślnym generowanym przez kompilator.
- Prywatny konstruktor uniemożliwia dziedziczenie, co pozwala ograniczyć zamierzone użycie klas pomocniczych i zwiększyć czytelność kodu.
Czasami przydatne jest użycie klasy zawierającej tylko statyczne metody i pola statyczne.
Typowymi przykładami są klasy pomocnicze, takie jak java.lang.Math, java.util.Arrays, które grupują metody związane z operacjami matematycznymi lub tablicami. Możliwe jest również zgromadzenie statycznych metod fabrycznych tworzących obiekty implementujące konkretny interfejs, na przykład java.util.Collections.
Tego typu klasy pomocnicze nie wymagają zmiennych ani metod instancji, więc konstruktor nie jest wymagany. Jeśli jednak konstruktor nie zostanie jawnie zdefiniowany, kompilator automatycznie utworzy publiczny konstruktor domyślny. W rezultacie użytkownik nie jest w stanie rozróżnić, czy konstruktor został utworzony automatycznie.
Aby temu zapobiec, można zastosować klasę abstrakcyjną, ale nie można stworzyć instancji klasy abstrakcyjnej. Wystarczy stworzyć podklasę i stworzyć instancję tej podklasy.
public abstract class Person {
public static void speak(String message) {
System.out.println(message);
}
}
public class Student extends Person {
public Student() {
super();
}
Dlatego aby zapobiec tworzeniu instancji klasy pomocniczej, należy ustawić modyfikator dostępu konstruktora na private.
public abstract class Person {
private Person() {
throw new AssertionError();
}
public static void speak(String message) {
System.out.println(message);
}
Ustawienie modyfikatora dostępu konstruktora na private oznacza, że nie można uzyskać do niego dostępu z zewnątrz klasy. Dodatkowo, wyjątek zostanie wygenerowany, jeśli konstruktor zostanie wywołany wewnętrznie.
Takie prywatne konstruktory mogą być trudne do zrozumienia dla użytkowników, dlatego warto dodać komentarze. Należy również pamiętać, że zablokowanie konstruktora za pomocą modyfikatora private uniemożliwia dziedziczenie.