logo

Konštruktory Java

Konštruktory Java alebo konštruktory v jazyku Java je terminológia používaná na vytvorenie niečoho v našich programoch. Konštruktor v jazyku Java je a špeciálna metóda ktorý sa používa na inicializáciu objektov. Konštruktor sa volá, keď je vytvorený objekt triedy. Môže sa použiť na nastavenie počiatočných hodnôt atribútov objektu.

Čo sú konštruktory v jazyku Java?

V Jave je konštruktor blok kódov podobný metóde. Volá sa, keď sa vytvorí inštancia triedy. V čase volania konštruktora je v pamäti alokovaná pamäť pre objekt. Ide o špeciálny typ metódy, ktorá sa používa na inicializáciu objektu. Zakaždým, keď sa vytvorí objekt pomocou kľúčového slova new(), zavolá sa aspoň jeden konštruktor.



Príklad Java Constructor

Nižšie je uvedená implementácia konštruktorov Java:

Java
// Java Program to demonstrate // Constructor import java.io.*; // Driver Class class Geeks {    // Constructor  Geeks()  {  super();  System.out.println('Constructor Called');  }  // main function  public static void main(String[] args)  {  Geeks geek = new Geeks();  } }>

Výkon
Constructor Called>

Poznámka: Nie je potrebné písať konštruktor pre triedu. Je to preto, že kompilátor java vytvorí predvolený konštruktor (konštruktor bez argumentov), ​​ak vaša trieda žiadne nemá.

Ako sa konštruktory Java líšia od metód Java?

  • Konštruktory musia mať rovnaký názov ako trieda, v rámci ktorej sú definované, nie je to potrebné pre metódu v Jave.
  • Konštruktory nevracajú žiadny typ, zatiaľ čo metóda(y) majú návratový typ alebo neplatné ak nevráti žiadnu hodnotu.
  • Konštruktory sa volajú iba raz v čase vytvárania objektu, zatiaľ čo metóda(y) sa môže volať ľubovoľný počet krát.

Poďme teraz prísť so syntaxou pre konštruktor, ktorý je vyvolaný v čase vytvárania objektu alebo inštancie.



class Geek {   .......  // A Constructor  Geek() {  }  ....... } // We can create an object of the above class // using the below statement. This statement // calls above constructor. Geek obj = new Geek();>

Prvý riadok konštruktora je volanie funkcie super() alebo this(), (volanie konštruktora nadtriedy alebo preťaženého konštruktora), ak do konštruktora nezadáte volanie super kompilátor vám poskytne neargumentové volanie super na prvom riadku vášho kódu, na vytvorenie objektu je potrebné zavolať konštruktor super:

Ak si myslíte, že vaša trieda nie je podtriedou, ale v skutočnosti je, každá trieda v jazyku Java je podtriedou triedy objekt aj keď vo svojej definícii triedy nepoviete extends object.

Potreba konštruktérov v Jave

Myslite na krabicu. Ak hovoríme o triede boxu, potom bude mať nejaké premenné triedy (povedzme dĺžka, šírka a výška). Ale keď príde na vytvorenie jeho objektu (t.j. Box bude teraz existovať v pamäti počítača), potom tam môže byť krabica bez definovanej hodnoty pre jej rozmery? Odpoveď je N O .
Konštruktory sa teda používajú na priradenie hodnôt premenným triedy v čase vytvárania objektu, buď explicitne vykonané programátorom alebo samotnou Java (predvolený konštruktor).



sqrt java matematika

Keď sa volá Java Constructor?

Zakaždým, keď je objekt vytvorený pomocou a Nový() Kľúčové slovo, aspoň jeden konštruktor (môže to byť predvolený konštruktor) je vyvolaný na priradenie počiatočných hodnôt k údajových členov rovnakej triedy. Pravidlá pre písanie konštruktérov sú nasledovné:

  • Konštruktor(y) triedy musí mať rovnaký názov ako názov triedy, v ktorej sa nachádza.
  • Konštruktor v jazyku Java nemôže byť abstraktný, konečný, statický alebo synchronizovaný.
  • Modifikátory prístupu možno použiť v deklarácii konštruktora na riadenie jeho prístupu, t. j. ktorá iná trieda môže volať konštruktor.

Zďaleka sme sa naučili, že na inicializáciu stavu objektu sa používajú konštruktory. Páči sa mi to metódy , konštruktor obsahuje aj kolekciu príkazov (t.j. inštrukcií), ktoré sa vykonajú v čase vytvorenia objektu.

Typy konštruktérov v Jave

Teraz je ten správny čas na diskusiu o typoch konštruktorov, takže v Jave sú primárne uvedené tri typy konštruktorov:

  • Predvolený konštruktor
  • Parametrizovaný konštruktor
  • Kopírovať konštruktor

1. Predvolený konštruktor v jazyku Java

Konštruktor, ktorý nemá žiadne parametre, je známy ako predvolený konštruktor. Predvolený konštruktor je neviditeľný. A ak napíšeme konštruktor bez argumentov, kompilátor nevytvorí predvolený konštruktor. Vyberá sa. Je preťažený a nazýva sa parametrizovaný konštruktor. Predvolený konštruktor sa zmenil na parametrizovaný. Parametrizovaný konštruktor však nemôže zmeniť predvolený konštruktor. Predvolený konštruktor môže byť implicitný alebo explicitný. Ak nedefinujeme explicitne, dostaneme implicitný predvolený konštruktor. Ak ručne napíšeme konštruktor, ten implicitný sa prepíše.

Príklad:

Java
// Java Program to demonstrate // Default Constructor import java.io.*; // Driver class class GFG {  // Default Constructor  GFG() { System.out.println('Default constructor'); }  // Driver function  public static void main(String[] args)  {  GFG hello = new GFG();  } }>

Výkon
Default constructor>

Poznámka: Predvolený konštruktor poskytuje objektu predvolené hodnoty ako 0, null atď. v závislosti od typu.

2. Parametrizovaný konštruktor v Jave

Konštruktor, ktorý má parametre, je známy ako parametrizovaný konštruktor. Ak chceme inicializovať polia triedy s vlastnými hodnotami, tak použite parametrizovaný konštruktor.

Príklad:

výlet ale
Java
// Java Program for Parameterized Constructor import java.io.*; class Geek {  // data members of the class.  String name;  int id;  Geek(String name, int id)  {  this.name = name;  this.id = id;  } } class GFG {  public static void main(String[] args)  {  // This would invoke the parameterized constructor.  Geek geek1 = new Geek('Avinash', 68);  System.out.println('GeekName :' + geek1.name  + ' and GeekId :' + geek1.id);  } }>

Výkon
GeekName :Avinash and GeekId :68>

Pamätajte: Vráti konštruktor nejakú hodnotu?

V konštruktore nie sú žiadne príkazy návratovej hodnoty, ale konštruktor vracia aktuálnu inštanciu triedy. Do konštruktora môžeme napísať „návrat“.

Teraz najdôležitejšou témou, ktorá vstupuje do hry, je silné začlenenie OOPS s konštruktormi známymi ako preťaženie konštruktorov. Rovnako ako metódy môžeme preťažiť konštruktory na vytváranie objektov rôznymi spôsobmi. Kompilátor rozlišuje konštruktory na základe počtu parametrov, typov parametrov a poradia parametrov.

Príklad:

Java
// Java Program to illustrate constructor overloading // using same task (addition operation ) for different // types of arguments. import java.io.*; class Geek {  // constructor with one argument  Geek(String name)  {  System.out.println('Constructor with one '  + 'argument - String : ' + name);  }  // constructor with two arguments  Geek(String name, int age)  {  System.out.println(  'Constructor with two arguments : '  + ' String and Integer : ' + name + ' ' + age);  }  // Constructor with one argument but with different  // type than previous..  Geek(long id)  {  System.out.println(  'Constructor with one argument : '  + 'Long : ' + id);  } } class GFG {  public static void main(String[] args)  {  // Creating the objects of the class named 'Geek'  // by passing different arguments  // Invoke the constructor with one argument of  // type 'String'.  Geek geek2 = new Geek('Shikhar');  // Invoke the constructor with two arguments  Geek geek3 = new Geek('Dharmesh', 26);  // Invoke the constructor with one argument of  // type 'Long'.  Geek geek4 = new Geek(325614567);  } }>

Výkon
Constructor with one argument - String : Shikhar Constructor with two arguments : String and Integer : Dharmesh 26 Constructor with one argument : Long : 325614567>

3. Skopírujte konštruktor v jazyku Java

Na rozdiel od iných konštruktorov sa kopírovací konštruktor odovzdáva s iným objektom, ktorý skopíruje dostupné údaje z odovzdávaného objektu do novovytvoreného objektu.

java reťazec na celé číslo

Poznámka: V Jave nie je k dispozícii takýto vstavaný kopírovací konštruktor ako v iných programovacích jazykoch, ako je C++, namiesto toho si môžeme vytvoriť vlastný kopírovací konštruktor odovzdaním objektu tej istej triedy inej inštancii (objektu) triedy.

Príklad:

Java
// Java Program for Copy Constructor import java.io.*; class Geek {  // data members of the class.  String name;  int id;  // Parameterized Constructor  Geek(String name, int id)  {  this.name = name;  this.id = id;  }  // Copy Constructor  Geek(Geek obj2)  {  this.name = obj2.name;  this.id = obj2.id;  } } class GFG {  public static void main(String[] args)  {  // This would invoke the parameterized constructor.  System.out.println('First Object');  Geek geek1 = new Geek('Avinash', 68);  System.out.println('GeekName :' + geek1.name  + ' and GeekId :' + geek1.id);  System.out.println();  // This would invoke the copy constructor.  Geek geek2 = new Geek(geek1);  System.out.println(  'Copy Constructor used Second Object');  System.out.println('GeekName :' + geek2.name  + ' and GeekId :' + geek2.id);  } }>

Výkon
First Object GeekName :Avinash and GeekId :68 Copy Constructor used Second Object GeekName :Avinash and GeekId :68>

Ak chcete vedieť hlboko o konštruktéroch, existujú dva široko používané koncepty, ako je uvedené nižšie:

  • Reťazenie konštruktéra
  • Kopírovať konštruktor

Často kladené otázky v Java Constructors

1. Čo je to konštruktor v Jave?

Konštruktor v jazyku Java je a špeciálna metóda používa sa na inicializáciu objektov.

2. Môže byť konštruktor Java súkromný?

Áno, konštruktor môže byť vyhlásený za súkromný. Súkromný konštruktor sa používa na obmedzenie vytvárania objektov.