제이온

[Hatékony Java] 4. tétel: Ha meg szeretnéd akadályozni az példányosítást, használd a private konstruktort

  • Írás nyelve: Koreai
  • Országkód: Minden országcountry-flag
  • Informatika

Létrehozva: 2024-04-28

Létrehozva: 2024-04-28 13:38

Néha hasznos lehet olyan osztályokat használni, amelyek csak statikus metódusokat és statikus mezőket tartalmaznak.


Például a java.lang.Math, a java.util.Arrays, mint például a matematikai műveleteket vagy a tömbökkel kapcsolatos metódusokat tartalmazó segédprogram osztályok használhatók. Vagy a java.util.Collections, mint például a meghatározott interfészt implementáló objektumok létrehozására szolgáló statikus gyári metódusok is.


Ezeknek a segédprogram osztályoknak nincs szükségük konstruktorra, mivel nincsenek példányváltozóik vagy metódusaik. Ha azonban nem adunk meg konstruktort, a fordító automatikusan létrehoz egy nyilvános alapértelmezett konstruktort. Így a felhasználó nem tudja megkülönböztetni, hogy ez a konstruktor automatikusan generálódott-e.


Ennek megakadályozására néha absztrakt osztályként hozzák létre őket, de az absztrakt osztályok nem akadályozhatják meg a példányosítást. Mert elég egy alosztály létrehozása és annak példányosítása.



Ezért a segédprogram osztály példányosításának megakadályozása érdekében a konstruktor hozzáférési módosítóját privátra kell állítani.



Ha az alapértelmezett konstruktor hozzáférési módosítója privát, akkor a külső osztályok nem férhetnek hozzá. Ezenkívül megakadályozzuk, hogy belsőleg hívják meg a konstruktort, és kivételt dobjon.


Ez a privát konstruktor megnehezítheti a használatát, ezért jó ötlet megjegyzést fűzni hozzá. Megjegyzendő, hogy a konstruktor privátra állítása megakadályozza az öröklődést is.


Forrás

Hozzászólások0