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.
Hozzászólások0