logo

Konstruktori Java valodā

  1. Konstruktoru veidi
    1. Noklusējuma konstruktors
    2. Parametrizēts konstruktors
  2. Konstruktora pārslodze
  3. Vai konstruktors atgriež kādu vērtību?
  4. Viena objekta vērtību kopēšana citā
  5. Vai konstruktors inicializācijas vietā veic citus uzdevumus

In Java , konstruktors ir metodei līdzīgs kodu bloks. To sauc, ja instancē klasē ir izveidots. Konstruktora izsaukšanas brīdī atmiņā tiek iedalīta objekta atmiņa.

Tas ir īpašs metodes veids, ko izmanto objekta inicializācijai.

Katru reizi, kad objekts tiek izveidots, izmantojot atslēgvārdu new(), tiek izsaukts vismaz viens konstruktors.

Tas izsauc noklusējuma konstruktoru, ja klasē nav pieejams konstruktors. Šādā gadījumā Java kompilators pēc noklusējuma nodrošina noklusējuma konstruktoru.

Java ir divu veidu konstruktori: no-arg konstruktors un parametrizētais konstruktors.

Piezīme: To sauc par konstruktoru, jo tas konstruē vērtības objekta izveides laikā. Nav obligāti jāraksta klases konstruktors. Tas ir tāpēc, ka java kompilators izveido noklusējuma konstruktoru, ja jūsu klasei tāda nav.

Java konstruktora izveides noteikumi

Konstruktoram ir definēti divi noteikumi.

salīdziniet virknē
  1. Konstruktora nosaukumam ir jābūt tādam pašam kā klases nosaukumam
  2. Konstruktoram nedrīkst būt precīzs atgriešanas veids
  3. Java konstruktors nevar būt abstrakts, statisks, galīgs un sinhronizēts

Piezīme: mēs varam izmantot piekļuves modifikatori vienlaikus deklarējot konstruktoru. Tas kontrolē objekta izveidi. Citiem vārdiem sakot, mums var būt privāts, aizsargāts, publisks vai noklusējuma konstruktors Java.

Java konstruktoru veidi

Java ir divu veidu konstruktori:

  1. Noklusējuma konstruktors (no-arg konstruktors)
  2. Parametrizēts konstruktors
Java konstruktori

Java noklusējuma konstruktors

Konstruktors tiek saukts par “Noklusējuma konstruktoru”, ja tam nav parametru.

Noklusējuma konstruktora sintakse:

 (){} 

Noklusējuma konstruktora piemērs

Šajā piemērā mēs veidojam no-arg konstruktoru klasē Bike. Tas tiks izsaukts objekta izveides laikā.
 //Java Program to create and call a default constructor class Bike1{ //creating a default constructor Bike1(){System.out.println('Bike is created');} //main method public static void main(String args[]){ //calling a default constructor Bike1 b=new Bike1(); } } 
Izmēģiniet to tūlīt

Izvade:

 Bike is created 

Noteikums: ja klasē nav konstruktora, kompilators automātiski izveido noklusējuma konstruktoru.

Java noklusējuma konstruktors

J) Kāds ir noklusējuma konstruktora mērķis?

Noklusējuma konstruktors tiek izmantots, lai nodrošinātu objekta noklusējuma vērtības, piemēram, 0, nulles utt., atkarībā no veida.

Noklusējuma konstruktora piemērs, kas parāda noklusējuma vērtības

 //Let us see another example of default constructor //which displays the default values class Student3{ int id; String name; //method to display the value of id and name void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects Student3 s1=new Student3(); Student3 s2=new Student3(); //displaying values of the object s1.display(); s2.display(); } } 
Izmēģiniet to tūlīt

Izvade:

 0 null 0 null 

Paskaidrojums: Iepriekš minētajā klasē jūs neveidojat nevienu konstruktoru, tāpēc kompilators nodrošina noklusējuma konstruktoru. Šeit 0 un nulles vērtības nodrošina noklusējuma konstruktors.


Java parametrizētais konstruktors

Konstruktoru, kuram ir noteikts parametru skaits, sauc par parametrizētu konstruktoru.

Kāpēc izmantot parametrizēto konstruktoru?

Parametrētais konstruktors tiek izmantots, lai atsevišķiem objektiem nodrošinātu dažādas vērtības. Tomēr jūs varat arī norādīt tās pašas vērtības.

Parametrēta konstruktora piemērs

Šajā piemērā mēs esam izveidojuši Studentu klases konstruktoru, kam ir divi parametri. Konstruktorā var būt jebkurš parametru skaits.

 //Java Program to demonstrate the use of the parameterized constructor. class Student4{ int id; String name; //creating a parameterized constructor Student4(int i,String n){ id = i; name = n; } //method to display the values void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects and passing values Student4 s1 = new Student4(111,'Karan'); Student4 s2 = new Student4(222,'Aryan'); //calling method to display the values of object s1.display(); s2.display(); } } 
Izmēģiniet to tūlīt

Izvade:

 111 Karan 222 Aryan 

Konstruktora pārslodze Java

Java valodā konstruktors ir gluži kā metode, bet bez atgriešanas veida. To var arī pārslogot, piemēram, Java metodes.

Konstruktors pārslodze Java ir paņēmiens, kurā ir vairāk nekā viens konstruktors ar dažādiem parametru sarakstiem. Tie ir sakārtoti tā, lai katrs konstruktors veiktu citu uzdevumu. Kompilators tos atšķir pēc parametru skaita sarakstā un to veidiem.

Konstruktora pārslodzes piemērs

 //Java program to overload constructors class Student5{ int id; String name; int age; //creating two arg constructor Student5(int i,String n){ id = i; name = n; } //creating three arg constructor Student5(int i,String n,int a){ id = i; name = n; age=a; } void display(){System.out.println(id+' '+name+' '+age);} public static void main(String args[]){ Student5 s1 = new Student5(111,'Karan'); Student5 s2 = new Student5(222,'Aryan',25); s1.display(); s2.display(); } } 
Izmēģiniet to tūlīt

Izvade:

 111 Karan 0 222 Aryan 25 

Atšķirība starp konstruktoru un metodi Java

Starp konstruktoriem un metodēm ir daudz atšķirību. Tie ir norādīti zemāk.

Java konstruktorsJava metode
Konstruktors tiek izmantots, lai inicializētu objekta stāvokli.Tiek izmantota metode, lai atklātu objekta uzvedību.
Konstruktoram nedrīkst būt atgriešanas veids.Metodei ir jābūt atgriešanas veidam.
Konstruktors tiek izsaukts netieši.Metode ir skaidri izsaukta.
Java kompilators nodrošina noklusējuma konstruktoru, ja klasē nav neviena konstruktora.Metodi nekādā gadījumā nenodrošina kompilators.
Konstruktora nosaukumam ir jābūt tādam pašam kā klases nosaukumam.Metodes nosaukums var būt vai nebūt tāds pats kā klases nosaukums.

Java konstruktori pret metodēm

Java kopiju konstruktors

Java nav kopiju konstruktora. Tomēr mēs varam kopēt vērtības no viena objekta uz citu, piemēram, kopēt konstruktoru programmā C++.

Ir daudz veidu, kā Java kopēt viena objekta vērtības citā. Viņi ir:

  • Pēc konstruktora
  • Piešķirot viena objekta vērtības citam
  • Ar objektu klases clone() metodi

Šajā piemērā mēs kopēsim viena objekta vērtības citā, izmantojot Java konstruktoru.

 //Java program to initialize the values from one object to another object. class Student6{ int id; String name; //constructor to initialize integer and string Student6(int i,String n){ id = i; name = n; } //constructor to initialize another object Student6(Student6 s){ id = s.id; name =s.name; } void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student6 s1 = new Student6(111,'Karan'); Student6 s2 = new Student6(s1); s1.display(); s2.display(); } } 
Izmēģiniet to tūlīt

Izvade:

 111 Karan 111 Karan 

Vērtību kopēšana bez konstruktora

Mēs varam kopēt viena objekta vērtības citā, piešķirot objektu vērtības citam objektam. Šajā gadījumā nav nepieciešams izveidot konstruktoru.

 class Student7{ int id; String name; Student7(int i,String n){ id = i; name = n; } Student7(){} void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student7 s1 = new Student7(111,'Karan'); Student7 s2 = new Student7(); s2.id=s1.id; s2.name=s1.name; s1.display(); s2.display(); } } 
Izmēģiniet to tūlīt

Izvade:

 111 Karan 111 Karan 

J) Vai konstruktors atgriež kādu vērtību?

Jā, tā ir pašreizējā klases instance (jūs nevarat izmantot atgriešanas veidu, taču tas atgriež vērtību).


Vai konstruktors inicializācijas vietā var veikt citus uzdevumus?

Jā, piemēram, objekta izveide, pavediena sākšana, metodes izsaukšana utt. Konstruktorā varat veikt jebkuru darbību, tāpat kā metodē.

kinoaktrise Kajal

Vai Java ir Constructor klase?

Jā.


Kāds ir konstruktoru klases mērķis?

Java nodrošina Constructor klasi, ko var izmantot, lai iegūtu klases konstruktora iekšējo informāciju. Tas ir atrodams java.lang.reflect pakotnē.