logo

Java-konstruktorit

Java-konstruktorit tai Javan konstruktorit ovat terminologiaa, jota käytetään rakentamaan jotain ohjelmissamme. Javan konstruktori on a erityinen menetelmä jota käytetään objektien alustamiseen. Konstruktoria kutsutaan, kun luokan objekti luodaan. Sitä voidaan käyttää objektin attribuuttien alkuarvojen asettamiseen.

Mitä konstruktorit ovat Javassa?

Javassa Constructor on menetelmän kaltainen koodilohko. Sitä kutsutaan, kun luokan esiintymä luodaan. Konstruktoria kutsuttaessa objektille varataan muistia muistiin. Se on erityinen menetelmä, jota käytetään objektin alustamiseen. Joka kerta kun objekti luodaan käyttämällä new()-avainsanaa, kutsutaan vähintään yhtä konstruktoria.



Esimerkki Java Constructorista

Alla on Java-konstruktorien toteutus:

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

Lähtö
Constructor Called>

Huomautus: Luokkalle ei tarvitse kirjoittaa konstruktoria. Tämä johtuu siitä, että java-kääntäjä luo oletuskonstruktorin (konstruktorin ilman argumentteja), jos luokallasi ei ole sellaista.

Kuinka Java-konstruktorit eroavat Java-menetelmistä?

  • Konstruktoreilla on oltava sama nimi kuin luokalla, jossa se on määritelty, se ei ole välttämätön menetelmälle Javassa.
  • Rakentajat eivät palauta mitään tyyppiä, kun menetelmällä (metodeilla) on palautustyyppi tai mitätön jos ei palauta arvoa.
  • Konstruktoreita kutsutaan vain kerran objektin luonnin aikana, kun taas menetelmää (metodeja) voidaan kutsua kuinka monta kertaa tahansa.

Nyt keksitään syntaksi konstruktorille, jota kutsutaan objektin tai ilmentymän luomisen yhteydessä.



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

Konstruktorin ensimmäinen rivi on kutsu super() tai this(), (kutsu superluokan konstruktorille tai ylikuormitetulle konstruktorille), jos et kirjoita super-kutsua konstruktoriisi kääntäjä tarjoaa sinulle ei-argumentoidun kutsun super:lle koodisi ensimmäisellä rivillä, superkonstruktori on kutsuttava objektin luomiseksi:

Jos luulet, että luokkasi ei ole alaluokka, niin jokainen Java-luokka on luokan alaluokka esine vaikka et sano Extens-objektia luokkasi määritelmässä.

Javan rakentajien tarve

Ajattele laatikkoa. Jos puhumme laatikkoluokasta, siinä on joitain luokkamuuttujia (esimerkiksi pituus, leveys ja korkeus). Mutta kun on kyse sen objektin luomisesta (eli laatikko on nyt tietokoneen muistissa), voiko siellä olla laatikko, jonka mitoille ei ole määritetty arvoa? Vastaus on N O .
Joten konstruktoreita käytetään arvojen määrittämiseen luokkamuuttujille objektin luomisen yhteydessä, joko ohjelmoijan tai itse Javan (oletuskonstruktorin) tekemän.



avl puita

Milloin Java Constructor kutsutaan?

Joka kerta kun objekti luodaan käyttämällä a Uusi() avainsana, vähintään yksi konstruktori (se voi olla oletuskonstruktori) kutsutaan antamaan alkuarvot datan jäseniä samaa luokkaa. Säännöt rakentajien kirjoittamiselle ovat seuraavat:

  • Luokan rakentajilla on oltava sama nimi kuin luokan nimellä, jossa se sijaitsee.
  • Javan konstruktori ei voi olla abstrakti, lopullinen, staattinen tai synkronoitu.
  • Pääsymääritteitä voidaan käyttää rakentajan määrittelyssä ohjaamaan sen pääsyä eli mikä muu luokka voi kutsua konstruktoria.

Tähän mennessä olemme oppineet, että konstruktoreita käytetään objektin tilan alustamiseen. Kuten menetelmiä , konstruktori sisältää myös kokoelman lauseita (eli käskyjä), jotka suoritetaan objektin luomisen yhteydessä.

Javan konstruktorityypit

Nyt on oikea aika keskustella rakentajien tyypeistä, joten Javassa on pääasiassa kolme tyyppiä rakentajia, jotka mainitaan alla:

  • Oletuskonstruktori
  • Parametrisoitu konstruktori
  • Kopioi rakentaja

1. Java-oletuskonstruktori

Konstruktori, jolla ei ole parametreja, tunnetaan oletuskonstruktorina. Oletuskonstruktori on näkymätön. Ja jos kirjoitamme rakentajan ilman argumentteja, kääntäjä ei luo oletuskonstruktoria. Se otetaan pois. Sitä ylikuormitetaan ja sitä kutsutaan parametroiduksi konstruktoriksi. Oletuskonstruktori muuttui parametroiduksi konstruktoriksi. Mutta parametroitu konstruktori ei voi muuttaa oletuskonstruktoria. Oletuskonstruktori voi olla implisiittinen tai eksplisiittinen. Jos emme määrittele eksplisiittisesti, saamme implisiittisen oletuskonstruktorin. Jos kirjoitamme konstruktorin manuaalisesti, implisiittinen ohitetaan.

listasolmu

Esimerkki:

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

Lähtö
Default constructor>

Huomautus: Oletuskonstruktori tarjoaa objektille oletusarvot, kuten 0, null jne. tyypistä riippuen.

2. Parametrisoitu konstruktori Javassa

Konstruktori, jolla on parametreja, tunnetaan parametroiduna konstruktorina. Jos haluamme alustaa luokan kentät omilla arvoillamme, käytä parametroitua konstruktoria.

Esimerkki:

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

Lähtö
GeekName :Avinash and GeekId :68>

Muista: Palauttaako konstruktori mitään arvoa?

binäärihakupuu

Konstruktorissa ei ole paluuarvolauseita, mutta rakentaja palauttaa nykyisen luokan ilmentymän. Voimme kirjoittaa 'paluu' konstruktorin sisään.

Nyt tärkein aihe, joka tulee peliin, on OOPS:n vahva yhdistäminen konstruktoreihin, jotka tunnetaan rakentajien ylikuormituksena. Kuten menetelmät, voimme ylikuormittaa rakentajia luomaan objekteja eri tavoin. Kääntäjä erottaa rakentajat parametrien lukumäärän, parametrityyppien ja parametrien järjestyksen perusteella.

Esimerkki:

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

Lähtö
Constructor with one argument - String : Shikhar Constructor with two arguments : String and Integer : Dharmesh 26 Constructor with one argument : Long : 325614567>

3. Kopioi Constructor Javassa

Toisin kuin muut rakentajat, kopiokonstruktori välitetään toisen objektin kanssa, joka kopioi ohitetusta objektista saatavilla olevat tiedot äskettäin luotuun objektiin.

Huomautus: Javassa ei ole sellaista sisäänrakennettua kopiokonstruktoria saatavilla kuten muissa ohjelmointikielissä, kuten C++, sen sijaan voimme luoda oman kopiokonstruktorin välittämällä saman luokan objektin luokan toiselle esiintymälle (objektille).

Esimerkki:

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

Lähtö
First Object GeekName :Avinash and GeekId :68 Copy Constructor used Second Object GeekName :Avinash and GeekId :68>

Jotta tietäisit syvältä rakentajista, on olemassa kaksi laajasti käytettyä käsitettä, jotka on lueteltu alla:

  • Rakentajan ketjutus
  • Kopioi rakentaja

Usein kysytyt kysymykset Java-konstruktoreissa

1. Mikä on konstruktori Javassa?

Javan konstruktori on a erityinen menetelmä käytetään objektien alustamiseen.

2. Voiko Java-konstruktori olla yksityinen?

Kyllä, rakentaja voidaan julistaa yksityiseksi. Yksityistä rakentajaa käytetään objektin luomisen rajoittamiseen.