logo

Constructori Java

Constructorii sau constructorii Java în Java este o terminologie folosită pentru a construi ceva în programele noastre. Un constructor în Java este un metoda speciala care este folosit pentru a inițializa obiecte. Constructorul este apelat atunci când este creat un obiect al unei clase. Poate fi folosit pentru a seta valori inițiale pentru atributele obiectului.

Ce sunt constructorii în Java?

În Java, un Constructor este un bloc de coduri similar cu metoda. Este apelat atunci când este creată o instanță a clasei. În momentul apelării constructorului, memoria pentru obiect este alocată în memorie. Este un tip special de metodă care este folosită pentru a inițializa obiectul. De fiecare dată când un obiect este creat folosind cuvântul cheie new(), cel puțin un constructor este apelat.

Exemplu de constructor Java

Mai jos este implementarea constructorilor 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();  } }>

Ieșire
Constructor Called>

Notă: Nu este necesar să scrieți un constructor pentru o clasă. Se datorează faptului că compilatorul java creează un constructor implicit (constructor fără argumente) dacă clasa ta nu are niciunul.

Cum sunt constructorii Java diferiți de metodele Java?

  • Constructorii trebuie să aibă același nume ca și clasa în care este definită, nu este necesar pentru metoda în Java.
  • Constructorii nu returnează niciun tip în timp ce metodele au tipul returnat sau gol dacă nu returnează nicio valoare.
  • Constructorii sunt apelați o singură dată în momentul creării obiectului, în timp ce metoda(ele) pot fi apelate de orice număr de ori.

Acum să venim cu sintaxa pentru constructorul care este invocat în momentul creării obiectului sau instanței.

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

Prima linie a unui constructor este un apel la super() sau this(), (un apel la un constructor al unei super-clase sau un constructor supraîncărcat), dacă nu tastați apelul la super în constructorul dvs. compilatorul vă va oferi un apel fără argument la super la prima linie a codului dvs., super constructorul trebuie apelat pentru a crea un obiect:

Dacă credeți că clasa dvs. nu este o subclasă, ceea ce este de fapt, fiecare clasă din Java este subclasa unei clase obiect chiar dacă nu spuneți extinde obiectul în definiția clasei dvs.

Nevoia de constructori în Java

Gândiți-vă la o cutie. Dacă vorbim despre o clasă casetă, atunci aceasta va avea câteva variabile de clasă (să spunem lungimea, lățimea și înălțimea). Dar când vine vorba de crearea obiectului său (adică Box va exista acum în memoria computerului), atunci poate o cutie să fie acolo fără nicio valoare definită pentru dimensiunile sale? Raspunsul este N O .
Deci, constructorii sunt folosiți pentru a atribui valori variabilelor de clasă în momentul creării obiectului, fie făcut în mod explicit de programator sau de Java însuși (constructor implicit).

java catch try

Când se numește Java Constructor?

De fiecare dată când un obiect este creat folosind a nou() cuvânt cheie, cel puțin un constructor (ar putea fi constructorul implicit) este invocat pentru a atribui valori inițiale lui membri de date din aceeași clasă. Regulile pentru scrierea constructorilor sunt următoarele:

  • Constructorul (constructorii) unei clase trebuie să aibă același nume cu numele clasei în care se află.
  • Un constructor în Java nu poate fi abstract, final, static sau sincronizat.
  • Modificatorii de acces pot fi utilizați în declarația constructorului pentru a-i controla accesul, adică ce altă clasă poate apela constructorul.

Deci, de departe, am învățat că constructorii sunt folosiți pentru a inițializa starea obiectului. Ca metode , un constructor conține, de asemenea, o colecție de instrucțiuni (adică instrucțiuni) care sunt executate în momentul creării obiectului.

ipconfig pentru ubuntu

Tipuri de constructori în Java

Acum este momentul corect pentru a discuta despre tipurile de constructor, așa că în primul rând există trei tipuri de constructori în Java, care sunt menționate mai jos:

  • Constructor implicit
  • Constructor parametrizat
  • Copie constructor

1. Constructor implicit în Java

Un constructor care nu are parametri este cunoscut drept constructor implicit. Un constructor implicit este invizibil. Și dacă scriem un constructor fără argumente, compilatorul nu creează un constructor implicit. Este scos. Este supraîncărcat și numit un constructor parametrizat. Constructorul implicit s-a schimbat în constructorul parametrizat. Dar constructorul parametrizat nu poate schimba constructorul implicit. Constructorul implicit poate fi implicit sau explicit. Dacă nu definim în mod explicit, obținem un constructor implicit implicit. Dacă scriem manual un constructor, cel implicit este suprascris.

Exemplu:

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

Ieșire
Default constructor>

Notă: Constructorul implicit oferă obiectului valorile implicite, cum ar fi 0, null etc., în funcție de tip.

2. Constructor parametrizat în Java

Un constructor care are parametri este cunoscut ca constructor parametrizat. Dacă vrem să inițializam câmpuri ale clasei cu propriile noastre valori, atunci folosiți un constructor parametrizat.

Exemplu:

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

Ieșire
GeekName :Avinash and GeekId :68>

Rețineți: constructorul returnează vreo valoare?

Nu există instrucțiuni de valoare returnată în constructor, dar constructorul returnează instanța curentă a clasei. Putem scrie „retur” în interiorul unui constructor.

Acum, cel mai important subiect care intră în joc este încorporarea puternică a OOPS cu constructori cunoscuți sub numele de supraîncărcare a constructorului. La fel ca și metodele, putem supraîncărca constructorii pentru a crea obiecte în moduri diferite. Compilatorul diferențiază constructorii pe baza numărului de parametri, a tipurilor de parametri și a ordinii parametrilor.

Exemplu:

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

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

3. Copiați constructorul în Java

Spre deosebire de alți constructori, constructorul de copiere este transmis cu un alt obiect care copiază datele disponibile de la obiectul transmis la obiectul nou creat.

Notă: În Java, nu există un astfel de constructor de copiere încorporat disponibil ca în alte limbaje de programare, cum ar fi C++, în schimb ne putem crea propriul constructor de copiere trecând obiectul aceleiași clase celeilalte instanțe (obiect) a clasei.

Exemplu:

din punct de vedere lexicografic
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);  } }>

Ieșire
First Object GeekName :Avinash and GeekId :68 Copy Constructor used Second Object GeekName :Avinash and GeekId :68>

Pentru a cunoaște în profunzime despre constructori, există două concepte utilizate pe scară largă, după cum sunt enumerate mai jos:

  • Constructor Chaining
  • Copie constructor

Întrebări frecvente în constructorii Java

1. Ce este un constructor în Java?

Un constructor în Java este un metoda speciala folosit pentru a inițializa obiecte.

2. Poate un constructor Java să fie privat?

Da, un constructor poate fi declarat privat. Un constructor privat este folosit pentru a restricționa crearea de obiecte.