logo

Java konstruktoriai

„Java“ konstruktoriai arba „Java“ konstruktoriai yra terminologija, naudojama norint ką nors sukurti mūsų programose. „Java“ konstruktorius yra a specialus metodas kuris naudojamas objektams inicijuoti. Konstruktorius iškviečiamas, kai sukuriamas klasės objektas. Jis gali būti naudojamas objekto atributų pradinėms reikšmėms nustatyti.

Kas yra „Java“ konstruktoriai?

Java programoje konstruktorius yra kodų blokas, panašus į metodą. Jis iškviečiamas, kai sukuriamas klasės egzempliorius. Konstruktoriaus iškvietimo metu atmintyje yra skirta objektui atmintis. Tai specialus metodas, naudojamas inicijuoti objektą. Kiekvieną kartą, kai objektas sukuriamas naudojant raktinį žodį new(), iškviečiamas bent vienas konstruktorius.



Java konstruktoriaus pavyzdys

Žemiau pateikiamas „Java Constructors“ diegimas:

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

Išvestis
Constructor Called>

Pastaba: Nebūtina rašyti klasės konstruktoriaus. Taip yra todėl, kad „Java“ kompiliatorius sukuria numatytąjį konstruktorių (konstruktorius be argumentų), jei jūsų klasė tokio neturi.

Kuo Java konstruktoriai skiriasi nuo Java metodų?

  • Konstruktoriai turi turėti tokį patį pavadinimą kaip klasė, kurioje jis apibrėžtas, tai nėra būtina metodui Java.
  • Konstruktoriai nepateikia jokio tipo, o metodas (-ai) turi grąžinimo tipą arba tuštuma jei negrąžina jokios reikšmės.
  • Konstruktoriai iškviečiami tik vieną kartą objekto kūrimo metu, o metodas (-ai) gali būti iškviečiami bet kokį skaičių kartų.

Dabar sugalvokime konstruktoriaus, kuris iškviečiamas kuriant objektą ar egzempliorių, sintaksę.



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

Pirmoji konstruktoriaus eilutė yra iškvietimas į super() arba this(), (iššaukimas superklasės konstruktoriui arba perkrautam konstruktoriui), jei konstruktoriuje neįvedate iškvietimo super Kompiliatorius pateiks jums neargumentinį iškvietimą į super pirmoje kodo eilutėje, super konstruktorius turi būti iškviestas, kad būtų sukurtas objektas:

Jei manote, kad jūsų klasė nėra poklasis, tai iš tikrųjų yra, kiekviena Java klasė yra klasės poklasis objektas net jei savo klasės apibrėžime nepasakysite išplėsti objekto.

Reikia konstruktorių Java

Pagalvokite apie dėžutę. Jei kalbame apie dėžės klasę, tada ji turės tam tikrus klasės kintamuosius (tarkime, ilgis, plotis ir aukštis). Bet kai reikia sukurti objektą (t. y. dėžutė dabar egzistuos kompiuterio atmintyje), ar gali būti dėžutė be jo matmenų apibrėžtos vertės? Atsakymas yra N O .
Taigi konstruktoriai naudojami priskiriant reikšmes klasės kintamiesiems objekto kūrimo metu, tai aiškiai daro programuotojas arba pati Java (numatytasis konstruktorius).



vietos datos laikas java

Kada iškviečiamas „Java Constructor“?

Kiekvieną kartą, kai objektas sukuriamas naudojant a naujas () raktinis žodis, iškviečiamas bent vienas konstruktorius (tai gali būti numatytasis konstruktorius), kad priskirtų pradines reikšmes duomenų nariai tos pačios klasės. Konstruktorių rašymo taisyklės yra šios:

  • Klasės konstruktoriaus (-ių) pavadinimas (-ai) turi būti toks pat kaip ir klasės, kurioje ji yra, pavadinimas.
  • „Java“ konstruktorius negali būti abstraktus, galutinis, statinis arba sinchronizuotas.
  • Prieigos modifikatoriai gali būti naudojami konstruktoriaus deklaracijoje, kad būtų galima valdyti jo prieigą, ty kuri kita klasė gali iškviesti konstruktorių.

Taigi iki šiol mes sužinojome, kad konstruktoriai naudojami objekto būsenai inicijuoti. Kaip metodus , konstruktoriuje taip pat yra teiginių (ty instrukcijų), kurie vykdomi kuriant objektą, rinkinys.

„Java“ konstruktorių tipai

Dabar tinkamas laikas aptarti konstruktorių tipus, todėl toliau yra paminėti trys „Java“ konstruktorių tipai:

  • Numatytasis konstruktorius
  • Parametrizuotas konstruktorius
  • Kopijavimo konstruktorius

1. Numatytasis konstruktorius Java

Konstruktorius, kuris neturi parametrų, yra žinomas kaip numatytasis konstruktorius. Numatytasis konstruktorius yra nematomas. Ir jei rašome konstruktorių be argumentų, kompiliatorius nesukuria numatytojo konstruktoriaus. Jis išimamas. Jis perkraunamas ir vadinamas parametrizuotu konstruktoriumi. Numatytasis konstruktorius pakeistas į parametrizuotą konstruktorių. Tačiau parametrizuotas konstruktorius negali pakeisti numatytojo konstruktoriaus. Numatytasis konstruktorius gali būti numanomas arba aiškus. Jei neapibrėžiame aiškiai, gauname numanomą numatytąjį konstruktorių. Jei rankiniu būdu rašome konstruktorių, numanomasis yra nepaisomas.

myflixr

Pavyzdys:

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

Išvestis
Default constructor>

Pastaba: Numatytasis konstruktorius pateikia numatytąsias objekto reikšmes, pvz., 0, nulį ir tt, priklausomai nuo tipo.

2. Parameterized Constructor Java

Konstruktorius, turintis parametrus, yra žinomas kaip parametrizuotas konstruktorius. Jei norime inicijuoti klasės laukus savo reikšmėmis, naudokite parametrizuotą konstruktorių.

Pavyzdys:

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

Išvestis
GeekName :Avinash and GeekId :68>

Prisiminkite: ar konstruktorius grąžina kokią nors vertę?

java kolekcija

Konstruktoriumi grąžinimo vertės teiginių nėra, tačiau konstruktorius grąžina esamą klasės egzempliorių. Konstruktoriaus viduje galime parašyti „grįžta“.

Dabar svarbiausia tema, kuri ateina į žaidimą, yra tvirtas OOPS integravimas su konstruktoriais, žinomas kaip konstruktoriaus perkrova. Kaip ir metodai, mes galime perkrauti konstruktorius kurdami objektus įvairiais būdais. Kompiliatorius išskiria konstruktorius pagal parametrų skaičių, parametrų tipus ir parametrų tvarką.

Pavyzdys:

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

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

3. Nukopijuokite konstruktorių Java

Skirtingai nuo kitų konstruktorių, kopijavimo konstruktorius perduodamas su kitu objektu, kuris nukopijuoja turimus duomenis iš perduoto objekto į naujai sukurtą objektą.

Pastaba: „Java“ nėra tokio integruoto kopijavimo konstruktoriaus, kaip ir kitose programavimo kalbose, pvz., C++, vietoj to galime sukurti savo kopijų konstruktorių, perduodami tos pačios klasės objektą kitam klasės egzemplioriui (objektui).

Pavyzdys:

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

Išvestis
First Object GeekName :Avinash and GeekId :68 Copy Constructor used Second Object GeekName :Avinash and GeekId :68>

Norėdami sužinoti daugiau apie konstruktorius, plačiai naudojamos dvi toliau išvardytos sąvokos:

  • Konstruktorių grandinės
  • Kopijavimo konstruktorius

DUK „Java Constructors“.

1. Kas yra konstruktorius Java?

„Java“ konstruktorius yra a specialus metodas naudojamas objektams inicijuoti.

2. Ar „Java“ konstruktorius gali būti privatus?

Taip, konstruktorius gali būti paskelbtas privačiu. Privatus konstruktorius naudojamas apriboti objektų kūrimą.