Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

Ez egy AI által fordított bejegyzés.

제이온

[Hatékony Java] 4. elem: Ha meg szeretné akadályozni az instancíázást, használjon privát konstruktort

  • Írás nyelve: Koreai
  • Referencia ország: Minden ország country-flag

Válasszon nyelvet

  • Magyar
  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी

A durumis AI által összefoglalt szöveg

  • Ha segédprogram-osztályt hoz létre, amely csak statikus metódusokat és mezőket tartalmaz, a konstruktort priváttá kell tenni, hogy megakadályozzák az instancíázást.
  • Ez megakadályozza a konstruktort a külső hívását, és lehetővé teszi a fordító által automatikusan generált public alapértelmezett konstruktort explicit módon szabályozni.
  • A privát konstruktorok lehetetlenné teszik az öröklődést, így korlátozhatók a segédprogram-osztályok szándékos használata és javítható a kód olvashatósága.

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


A leggyakoribb példák közé tartozik a java.lang.Math, a java.util.Arrays, amelyek matematikai műveletekkel és tömbökkel kapcsolatos metódusokat tartalmaznak. Vagy a java.util.Collections, amely statikus gyári metódusokat tartalmaz egy adott interfészt implementáló objektumok létrehozásához.


Ezeknek a segédprogram-osztályoknak nincsenek különálló példány-változóik vagy metódusaik, ezért nincs szükségük konstruktorra. Ha azonban nem adunk meg konstruktort, a fordító automatikusan létrehoz egy nyilvános alapértelmezett konstruktort. Emiatt a felhasználó nem tudja megkülönböztetni, hogy ez a konstruktor automatikusan lett-e létrehozva, vagy kézzel lett-e beírva.


Ezt megakadályozandó, néha absztrakt osztályként definiálják őket, de az absztrakt osztályok nem akadályozhatják meg az instancíázást. Ha leszármazott osztályokat hozunk létre, akkor is lehet őket példányosítani.


public abstract class Person {

    public static void speak(String message) {
        System.out.println(message);
    }
}

public class Student extends Person {

    public Student() {
        super();
    }


Ezért ahhoz, hogy megakadályozzuk a segédprogram-osztályok instancíázását, a konstruktor hozzáférési módosítóját privátnak kell beállítani.


public abstract class Person {

    private Person() {
        throw new AssertionError();
    }

    public static void speak(String message) {
        System.out.println(message);
    }


Ha a konstruktor hozzáférési módosítója privát, akkor az osztályon kívülről nem lehet hozzáférni. Ezenkívül megakadályozzuk, hogy a konstruktor belülről is meghívható legyen, egy kivétel dobásával.


Ezeknek a privát konstruktoroknak a használata megnehezítheti a konstruktor megértését, ezért érdemes kommentárt adni hozzájuk. Ha a konstruktort priváttá tesszük, az öröklődést is lehetetlenné tesszük.


Forrás

제이온
제이온
제이온
제이온
[Hatékony Java] 5. pont: Ne adja meg a forrásokat, hanem használjon függőségi injektálást Ha egy osztály külső erőforrásoktól függ, akkor kerülje a szinglettek és a statikus segédprogram-osztályok használatát. A függőségi injektálás segítségével javítható az osztály rugalmassága, újrafelhasználhatósága és tesztelhetősége, és a gyári módszer mi

2024. április 28.

[Hatékony Java] 2. elem: Ha a konstruktornak sok paramétere van, fontolja meg a Builder használatát Ha sok paraméterrel rendelkező objektumot hoz létre, a Builder minta használata segít a kód tisztabb és olvashatóbb megírásában. A kötelező paraméterekkel hozzon létre egy Builder objektumot, a setter metódusokkal állítsa be a választható paramétereket, m

2024. április 27.

[Java] Reflection fogalma és használata A reflexió egy API, amely lehetővé teszi a Java programokban a futásidő alatt a osztályok információinak elérését és a osztályok manipulálását. Futásidőben lehetővé teszi a osztályok létrehozását, a mezők és metódusok elérését, de a kapszulázás megsértésé

2024. április 25.

[Javascript] Az objektum szerkezete (V8) A JavaScript objektumok a V8 motorban a gyors módnak megfelelő szerkezetek szövegéhez optimalizálódnak, vagy szótár módként működnek hash-táblaként, a állapottól függően. A gyors mód gyors, de ha új kulcsot adnak hozzá, vagy elemet törölnek, a szótár módb
곽경직
곽경직
곽경직
곽경직
곽경직

2024. március 18.

Koncepcionális adatmodellezés A koncepcionális adatmodellezés az entitások elkülönítésének és az entitások közötti kapcsolatok ERD-ként való ábrázolásának folyamata. Az entitások független információs egységek, az attribútumok pedig az entitások által birtokolt adatok. Az azonosítók e
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그

2024. április 8.

Hol tanuljak kódolni? : Online webes kódolási tanfolyamok gyűjteménye Bemutatjuk a kódolásba való bevezetéshez szükséges különféle ingyenes/fizetős online tanfolyamokat. Ingyenes kurzusok a Szabad Kódolás, a Khan Akadémia, az EBS, és fizetős szolgáltatások, mint a CodeStates, az Inflearn, a Fastcampus, ahol strukturált tanu
길리
길리
길리
길리

2024. március 29.

[Nem szakmai, fejlesztőként túlélés] 13. Újonc fejlesztő technikai interjú Bemutatjuk a 7 leggyakoribb kérdést, amelyeket az újonc fejlesztő technikai interjúin feltesznek, valamint a felkészülésre vonatkozó tippeket. Tekintsük át az OOP, az adatbázisok, a hálózatok, az algoritmusok és más területekhez kapcsolódó kérdéseket és v
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

2024. április 1.

[Szinkronitás] Atomi művelet: Memória kerítés és memória sorrendezés Ez a bejegyzés bemutatja, hogyan kell figyelembe venni a memória sorrendet atomi műveletekben, és megmagyarázza a sorrendezési beállítások fontosságát. Bemutatja a Relaxed, Acquire, Release, AcqRel, SecCst és egyéb sorrendezési beállításokat, valamint rés
곽경직
곽경직
곽경직
곽경직
곽경직

2024. április 12.

Hogyan akadályozza meg a Rust a párhuzamosítási hibákat A Rust egy erőteljes nyelv, amely megoldja a párhuzamos programozás kihívásait. A típusrendszere és a tulajdonmodell biztosítja az adatok biztonságos átvitelét és megosztását a szálak között. A belső változtathatóság mintái, mint a Mutex, a Channel és az
곽경직
곽경직
곽경직
곽경직
곽경직

2024. március 28.