Java - prywatny konstruktor vs finał i więcej
Załóżmy, że istnieje klasa ze wszystkimi jej konstruktorami zadeklarowanymi jako prywatne.
Na przykład.:
public class This {
private This () { }
public someMethod( ){
// something here
}
// some more-- no other constructors
}
Z tego co wiem, uczynienie wszystkich konstruktorów prywatnymi jest podobne do deklarowania klasy „This” jakofinał- tak, że nie można go przedłużyć.
Jednak komunikaty Eclipse, które otrzymuję, dają mi wrażenie, że jest to możliwe - klasa prywatna dla wszystkich konstruktorów może zostać rozszerzona. Popatrz na to:
Kiedy próbuję rozszerzyć tę klasę o coś podobnego
public class That extends This {
...
}
Eclipse dał mi błąd, który: „Niejawny super konstruktor To () nie jest widoczne dla domyślnego konstruktora. Musi zdefiniować jawny konstruktor."
Kiedy definiuję własnego konstruktora:
public class That extends This {
That () {..}
...
}
tym razem dostaję: ”Niejawny super konstruktor To () nie jest widoczne dla domyślnego konstruktora. Musi jawnie wywoływać innego konstruktora."
Czy istnieje sposób obejścia tego problemu - rozszerzenia klasy, której wszyscy konstruktorzy są prywatni?
jeśli tak, jak?
jeśli nie, jaka jest różnica między zatrzymaniem rozszerzania klasy przez i.), czyniąc jej konstruktorów prywatnymi i ii.) definiując ją jakofinał?
Uwaga: widziałemCzy konstruktor w Javie może być prywatny? wśród innych dyskusji.