logo

Konstruktorji Java

Javanski konstruktorji ali konstruktorji v Javi so terminologija, ki se uporablja za konstruiranje nečesa v naših programih. Konstruktor v Javi je a posebna metoda ki se uporablja za inicializacijo objektov. Konstruktor se pokliče, ko je ustvarjen objekt razreda. Uporablja se lahko za nastavitev začetnih vrednosti za atribute objekta.

Kaj so konstruktorji v Javi?

V Javi je konstruktor blok kod, ki je podoben metodi. Pokliče se, ko je ustvarjen primerek razreda. V času klica konstruktorja je pomnilnik za objekt dodeljen v pomnilniku. Je posebna vrsta metode, ki se uporablja za inicializacijo predmeta. Vsakič, ko je objekt ustvarjen s ključno besedo new(), se pokliče vsaj en konstruktor.

Primer konstruktorja Java

Spodaj je implementacija konstruktorjev 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();  } }>

Izhod
Constructor Called>

Opomba: Za razred ni treba napisati konstruktorja. To je zato, ker prevajalnik java ustvari privzeti konstruktor (konstruktor brez argumentov), ​​če jih vaš razred nima.

Kako se konstruktorji Java razlikujejo od metod Java?

  • Konstruktorji morajo imeti isto ime kot razred, znotraj katerega so definirani, kar ni potrebno za metodo v Javi.
  • Konstruktorji ne vrnejo nobenega tipa, medtem ko imajo metode povratni tip oz praznina če ne vrne nobene vrednosti.
  • Konstruktorji so klicani samo enkrat v času ustvarjanja objekta, medtem ko je(-e) mogoče klicati(-e) metod(e) poljubno število krat.

Sedaj pa poglejmo sintakso za konstruktor, ki se prikliče v času ustvarjanja predmeta ali primerka.

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();>

Prva vrstica konstruktorja je klic super() ali this(), (klic konstruktorja superrazreda ali preobremenjenega konstruktorja), če klica super ne vnesete v svoj konstruktor, prevajalnik vam bo zagotovil neargumentni klic super v prvi vrstici vaše kode, za ustvarjanje predmeta je treba poklicati super konstruktor:

Če menite, da vaš razred ni podrazred, je v resnici vsak razred v Javi podrazred razreda predmet tudi če v svoji definiciji razreda ne rečete extends object.

Potreba po konstruktorjih v Javi

Pomislite na škatlo. Če govorimo o razredu škatle, bo imel nekaj spremenljivk razreda (recimo dolžina, širina in višina). Ko pa gre za ustvarjanje njegovega predmeta (tj. Škatla bo zdaj obstajala v pomnilniku računalnika), potem je lahko škatla tam brez definirane vrednosti za njene dimenzije? Odgovor je N O .
Tako se konstruktorji uporabljajo za dodeljevanje vrednosti spremenljivkam razreda v času ustvarjanja objekta, bodisi izrecno s strani programerja bodisi s strani Java same (privzeti konstruktor).

vzorec javascripta

Kdaj se pokliče Java Constructor?

Vsakič, ko je predmet ustvarjen z uporabo a novo() ključno besedo, se prikliče vsaj en konstruktor (lahko je privzeti konstruktor), da dodeli začetne vrednosti člani podatkov istega razreda. Pravila za pisanje konstruktorjev so naslednja:

  • Konstruktor(-ji) razreda mora imeti isto ime kot ime razreda, v katerem se nahaja.
  • Konstruktor v Javi ne more biti abstrakten, končen, statičen ali sinhroniziran.
  • Modifikatorje dostopa lahko uporabite v deklaraciji konstruktorja za nadzor njegovega dostopa, tj. kateri drug razred lahko kliče konstruktor.

Tako daleč smo se naučili, da se za inicializacijo stanja objekta uporabljajo konstruktorji. Všeč mi je metode , konstruktor vsebuje tudi zbirko stavkov (tj. navodil), ki se izvedejo v času ustvarjanja objekta.

Vrste konstruktorjev v Javi

Zdaj je pravi čas za razpravo o tipih konstruktorjev, zato so v Javi predvsem tri vrste konstruktorjev, ki so omenjeni spodaj:

  • Privzeti konstruktor
  • Parametriziran konstruktor
  • Konstruktor Kopiraj

1. Privzeti konstruktor v Javi

Konstruktor, ki nima parametrov, je znan kot privzeti konstruktor. Privzeti konstruktor je neviden. In če napišemo konstruktor brez argumentov, prevajalnik ne ustvari privzetega konstruktorja. Izvleče se. Preobremenjen je in se imenuje parametrizirani konstruktor. Privzeti konstruktor se je spremenil v parametriziranega konstruktorja. Toda parametriran konstruktor ne more spremeniti privzetega konstruktorja. Privzeti konstruktor je lahko impliciten ali ekspliciten. Če ne definiramo izrecno, dobimo implicitni privzeti konstruktor. Če ročno napišemo konstruktor, je implicitni preglasen.

primer:

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();  } }>

Izhod
Default constructor>

Opomba: Privzeti konstruktor zagotavlja privzete vrednosti za objekt, kot so 0, nič itd., odvisno od vrste.

2. Parametrizirani konstruktor v Javi

Konstruktor, ki ima parametre, je znan kot parametriran konstruktor. Če želimo inicializirati polja razreda z lastnimi vrednostmi, potem uporabimo parametrizirani konstruktor.

primer:

odstranite zadnji znak iz niza
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);  } }>

Izhod
GeekName :Avinash and GeekId :68>

Ne pozabite: Ali konstruktor vrne kakšno vrednost?

V konstruktorju ni stavkov o vrnjeni vrednosti, vendar konstruktor vrne trenutni primerek razreda. Znotraj konstruktorja lahko zapišemo 'return'.

Zdaj je najpomembnejša tema, ki pride v poštev, močna vključitev OOPS v konstruktorje, znana kot preobremenitev konstruktorjev. Tako kot metode lahko tudi konstruktorje za ustvarjanje objektov preobremenimo na različne načine. Prevajalnik razlikuje konstruktorje na podlagi števila parametrov, tipov parametrov in vrstnega reda parametrov.

primer:

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);  } }>

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

3. Kopiraj konstruktor v Javi

Za razliko od drugih konstruktorjev se konstruktor kopiranja posreduje z drugim objektom, ki kopira podatke, ki so na voljo iz posredovanega objekta, v novo ustvarjeni objekt.

java generator naključnih števil

Opomba: V Javi ni takega vgrajenega konstruktorja kopiranja, ki je na voljo kot v drugih programskih jezikih, kot je C++, namesto tega lahko ustvarimo lasten konstruktor kopiranja tako, da objekt istega razreda posredujemo drugemu primerku (predmetu) razreda.

primer:

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);  } }>

Izhod
First Object GeekName :Avinash and GeekId :68 Copy Constructor used Second Object GeekName :Avinash and GeekId :68>

Da bi globoko vedeli o konstruktorjih, se pogosto uporabljata dva koncepta, ki sta navedena spodaj:

  • Veriženje konstruktorja
  • Konstruktor Kopiraj

Pogosta vprašanja v Java Constructors

1. Kaj je konstruktor v Javi?

Konstruktor v Javi je a posebna metoda uporablja za inicializacijo objektov.

2. Ali je lahko konstruktor Java zasebni?

Da, konstruktor lahko razglasimo za zasebnega. Za omejevanje ustvarjanja objektov se uporablja zasebni konstruktor.