Čo je to konštruktor v Jave a ako ho používate?

Čo je to konštruktor v Jave a ako ho používate?

V objektovo orientovanom programovaní je konštruktor špeciálna funkcia, ktorú voláte na vytvorenie objektu. Konštruktéri majú niekoľko jedinečných funkcií, ktoré im umožňujú pracovať.





V Jave pomenujete konštruktéra podľa jeho triedy. Konštruktor je metóda definovaná v triede, na ktorú sa vzťahuje. Konštruktéri Java môžu používať alternatívne správanie k preťaženiu. Konštruktéri v Jave môžu tiež použiť dedičnosť na opätovné použitie kódu.





Prečo vlastne potrebujete konštruktérov?

Konštruktéry sú základom objektovo orientovaného programovania a Java nie je výnimkou. Tento príklad ukazuje, ako môžete definovať základnú triedu Circle jednou vlastnosťou údajov a jednou metódou:





public class Circle {
public double radius;
public double area() { return 3.14159 * radius * radius; }
}

Potom môžete vytvoriť inštanciu tejto triedy a interagovať s ňou:

Circle c = new Circle();
c.radius = 2;
System.out.println(c.area()); // 12.56636

Toto je však menej pohodlné a robustné, ako by mohlo byť. Je dobrým objektovo orientovaným postupom zapuzdrenie údajov a ich ochrana pred neoprávneným prístupom:



public class Circle {
private double radius;
public double area() { return 3.14159 * radius * radius; }
public void setRadius(double r) { radius = r; }
}

Volací kód môže teraz používať príponu setRadius metódy a nemusíte sa starať o jej implementáciu:

Môžem použiť rozdeľovač HDMI pre dva monitory
Circle c = new Circle();
c.setRadius(2);

Konštruktéri ponúkajú ešte lepší spôsob dodávania údajov objektu, keď ho vytvoríte. Veľmi často sa používajú na inicializáciu vlastností, ako napríklad polomer tu.





Príklady jednoduchých konštruktorov

Najzákladnejším konštruktorom je ten, ktorý nemá žiadne argumenty a ktorý nič nerobí:

public class Circle {
public Circle() {}
}

Pozri tiež: Naučte sa vytvárať triedy v Jave





Ak nedefinujete konštruktor, Java poskytne predvolený, ktorý sa správa rovnako.

Všimnite si pár vecí:

  1. Názov konštruktora sa zhoduje s názvom triedy.
  2. Tento konštruktor používa príponu verejná modifikátor prístupu, takže ho môže nazvať akýkoľvek iný kód.
  3. Konštruktor nezahŕňa návratový typ. Na rozdiel od iných metód nemôžu konštruktory vrátiť hodnotu.

Konštruktéri zvyčajne vykonávajú nejaký druh inicializácie. Uvedený kód neinicializuje hodnotu polomeru. V takom prípade ho jazyk automaticky nastaví na nulu. Táto trieda očakáva, že ju používateľ použije setRadius () . Ak chcete použiť užitočnejšiu predvolenú hodnotu ako 0, môžete ju priradiť v rámci konštruktora:

public class Circle {
public Circle() { radius = 1; }
}

Kruhy vytvorené s touto triedou budú mať prinajmenšom teraz skutočnú plochu! Volajúci môže stále používať setRadius () poskytnúť polomer iný ako 1. Konštruktor však môže byť ešte priateľskejší:

public class Circle {
public Circle(double r) { radius = r; }
}

Teraz môžete vytvárať kruhy so špecifickým polomerom hneď od narodenia:

ako rozjasniť obrazovku v systéme Windows 10
Circle c = new Circle(2);
System.out.println(c.area()); // 12.56636

Toto je veľmi bežné použitie pre konštruktérov. Často ich budete používať na inicializáciu premenných na hodnoty parametrov.

Preťaženie konštruktéra

V definícii triedy môžete zadať viac ako jeden konštruktor:

public Circle() { radius = 1; }
public Circle(double r) { radius = r; }

To dáva volajúcemu kódu na výber, ako zostrojiť objekty:

Circle c1 = new Circle(2);
Circle c2 = new Circle();
System.out.println(c1.area() + ', ' + c2.area()); // 12.56636, 3.14159

S trochu zložitejším kruhom môžete preskúmať zaujímavejšie konštruktéry. Táto verzia si uchováva svoju pozíciu:

public class Circle {
public double x, y, radius;
public Circle() { radius = r; }
public Circle(double r) { radius = r; }
public Circle(double x, double y, double r) {
this.x = x; this.y = y; radius = r;
}

public double area() { return 3.14159 * radius * radius; }
}

Teraz môžete vytvoriť kruh bez argumentov, jedného polomeru alebo súradníc x a y pozdĺž polomeru. Je to ten istý druh preťaženia, ktoré Java podporuje pre každú metódu.

Reťazenie konštruktéra

Čo tak vytvoriť jeden kruh založený na inom? To by nám dalo možnosť ľahko kopírovať kruhy. Dodržujte nasledujúci blok:

public Circle(Circle c) {
this.x = c.x;
this.y = c.y;
this.radius = c.radius;
}

To bude fungovať, ale nejaký kód sa zbytočne opakuje. Pretože trieda Circle už má konštruktor, ktorý spracováva jednotlivé vlastnosti, môžete to namiesto toho nazvať pomocou toto kľúčové slovo:

public Circle(Circle c) {
this(c.x, c.y, c.radius);
}

Toto je jedna forma reťazenia konštruktérov, ktorá volá jeden konštruktér od druhého. Používa menej kódu a pomáha centralizovať operáciu, nie ju duplikovať.

Volanie nadradeného konštruktéra

K inej forme reťazenia konštruktérov dochádza, keď konštruktér zavolá konštruktor svojej nadradenej triedy. To môže byť buď explicitné, alebo implicitné. Ak chcete explicitne zavolať nadradeného konštruktora, použite príponu Super kľúčové slovo:

super(x, y);

Predstavte si triedu Shape, ktorá funguje ako rodič kruhu:

public class Shape {
double x, y;
public Shape(double _x, double _y) { x = _x; y = _y; }
}

Zvláda spoločné polohovanie pre všetky tvary, pretože túto funkciu zdieľajú všetky. Teraz môže trieda Circle delegovať spracovanie polohy na svojho rodiča:

public class Circle extends Shape {
double radius;
public Circle(double r) { super(0, 0); radius = r; }
public Circle(double x, double y, double r) {
super(x, y);
radius = r;
}
}

Konštrukcia nadtriedy je veľmi dôležitým aspektom dedičnosť v Jave . Ak nevolajete, jazyk to predvolene vynucuje Super vo vašich konštruktéroch.

Modifikátory prístupu na konštruktoroch

Konštruktéri môžu do svojho podpisu zahrnúť modifikátor prístupu. Rovnako ako ostatné metódy, toto definuje, ktoré typy volajúcich majú prístup ku konštruktoru:

public class Test {
private static Test uniqueInstance = new Test();
private Test() { }
public static Test getInstance() {
return uniqueInstance;
}
}

Toto je komplikovanejší príklad, preto ho pochopte:

  • Trieda nie je abstraktná, takže je možné z nej vytvoriť inštanciu.
  • Konštruktor je súkromný, takže iba túto triedu môže vytvoriť novú inštanciu.
  • Prostredníctvom statickej vlastnosti a metódy trieda sprístupňuje volajúcim jednu svoju jedinečnú inštanciu.

Na vytváranie objektov používajte konštruktory v Jave

Konštruktory sú životne dôležité pre objektovo orientované programovanie. Umožňujú vám vytvárať objekty, čo je nevyhnutné!

V Jave vyzerajú konštruktéry ako ostatné metódy a fungujú veľmi podobne. Mali by ste si zapamätať špeciálne pravidlá týkajúce sa predvolených konštruktorov, preťažovania a reťazenia konštruktérov. Ak sú pre vás konštruktéri novinkou, možno by ste si mali prečítať ďalšie základné koncepty Java, ktoré by ste sa mali naučiť na začiatku.

zdieľam zdieľam Tweet E -mail 10 základných konceptov Javy, ktoré by ste sa mali naučiť, keď začnete

Či už píšete GUI, vyvíjate softvér na strane servera alebo mobilnú aplikáciu s Androidom, výučba Javy vám dobre poslúži. Tu je niekoľko základných konceptov Java, ktoré vám pomôžu začať.

Čítajte ďalej
Súvisiace témy
  • Programovanie
  • Java
  • Tipy na kódovanie
O autorovi Bobby Jack(58 publikovaných článkov)

Bobby je technologický nadšenec, ktorý pracoval ako vývojár softvéru väčšinu dvoch desaťročí. Má nadšenie pre hry, pracuje ako editor recenzií v časopise Switch Player a je ponorený do všetkých aspektov online publikovania a webového vývoja.

najlepšie miesto na nákup videohier
Viac od Bobbyho Jacka

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber