logo

Konstruktører i Java

  1. Typer af konstruktører
    1. Standard konstruktør
    2. Parametriseret konstruktør
  2. Overbelastning af konstruktør
  3. Returnerer konstruktør nogen værdi?
  4. Kopiering af værdierne af et objekt til et andet
  5. Udfører konstruktøren andre opgaver i stedet for initialiseringen

I Java , en konstruktør er en blok af koder, der ligner metoden. Det kaldes, når en forekomst af klasse er oprettet. På tidspunktet for opkald af konstruktøren allokeres hukommelsen til objektet i hukommelsen.

Det er en speciel type metode, som bruges til at initialisere objektet.

Hver gang et objekt oprettes ved hjælp af nøgleordet new() kaldes mindst én konstruktør.

Det kalder en standardkonstruktør, hvis der ikke er en konstruktør tilgængelig i klassen. I sådanne tilfælde giver Java-kompileren som standard en standardkonstruktør.

Der er to typer konstruktører i Java: no-arg konstruktør og parameteriseret konstruktør.

Bemærk: Det kaldes konstruktør, fordi det konstruerer værdierne på tidspunktet for objektskabelse. Det er ikke nødvendigt at skrive en konstruktør til en klasse. Det er fordi java compiler opretter en standard konstruktør, hvis din klasse ikke har nogen.

Regler for oprettelse af Java-konstruktør

Der er to regler defineret for konstruktøren.

javascript if-erklæring
  1. Konstruktørens navn skal være det samme som dets klassenavn
  2. En konstruktør må ikke have nogen eksplicit returtype
  3. En Java-konstruktør kan ikke være abstrakt, statisk, endelig og synkroniseret

Bemærk: Vi kan bruge adgangsmodifikatorer mens de erklærer en konstruktør. Det styrer objektskabelsen. Med andre ord kan vi have privat, beskyttet, offentlig eller standard konstruktør i Java.

Typer af Java-konstruktører

Der er to typer konstruktører i Java:

  1. Standard konstruktør (no-arg konstruktør)
  2. Parametriseret konstruktør
Java konstruktører

Java Default Constructor

En konstruktør kaldes 'Default Constructor', når den ikke har nogen parameter.

Syntaks for standardkonstruktør:

 (){} 

Eksempel på standardkonstruktør

I dette eksempel opretter vi no-arg-konstruktøren i Bike-klassen. Det vil blive påberåbt på tidspunktet for objektoprettelse.
 //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(); } } 
Test det nu

Produktion:

 Bike is created 

Regel: Hvis der ikke er nogen konstruktør i en klasse, opretter compiler automatisk en standardkonstruktør.

Java standard konstruktør

Q) Hvad er formålet med en standardkonstruktør?

Standardkonstruktøren bruges til at levere standardværdierne til objektet som 0, null osv., afhængigt af typen.

Eksempel på standardkonstruktør, der viser standardværdierne

 //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(); } } 
Test det nu

Produktion:

 0 null 0 null 

Forklaring: I ovenstående klasse opretter du ikke nogen konstruktør, så compileren giver dig en standardkonstruktør. Her er 0- og null-værdier angivet som standardkonstruktør.


Java Parameterized Constructor

En konstruktør, som har et bestemt antal parametre, kaldes en parameteriseret konstruktør.

Hvorfor bruge den parametriserede konstruktør?

Den parametriserede konstruktør bruges til at give forskellige værdier til forskellige objekter. Du kan dog også angive de samme værdier.

Eksempel på parametriseret konstruktør

I dette eksempel har vi lavet konstruktøren af ​​Student-klassen, der har to parametre. Vi kan have et hvilket som helst antal parametre i konstruktøren.

java objekt til json
 //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(); } } 
Test det nu

Produktion:

 111 Karan 222 Aryan 

Overbelastning af konstruktør i Java

I Java er en konstruktør ligesom en metode, men uden returtype. Det kan også være overbelastet ligesom Java-metoder.

Konstruktør overbelastning i Java er en teknik til at have mere end én konstruktør med forskellige parameterlister. De er arrangeret på en måde, så hver konstruktør udfører en anden opgave. De er differentieret af compileren efter antallet af parametre i listen og deres typer.

Eksempel på konstruktøroverbelastning

 //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(); } } 
Test det nu

Produktion:

 111 Karan 0 222 Aryan 25 

Forskellen mellem konstruktør og metode i Java

Der er mange forskelle mellem konstruktører og metoder. De er angivet nedenfor.

Java konstruktørJava metode
En konstruktør bruges til at initialisere et objekts tilstand.En metode bruges til at afsløre et objekts adfærd.
En konstruktør må ikke have en returtype.En metode skal have en returtype.
Konstruktøren påkaldes implicit.Metoden påberåbes eksplicit.
Java-kompileren giver en standardkonstruktør, hvis du ikke har nogen konstruktør i en klasse.Metoden er ikke leveret af compileren under alle omstændigheder.
Konstruktørnavnet skal være det samme som klassenavnet.Metodens navn kan være det samme som klassenavnet.

Java-konstruktører vs. metoder

Java Copy Constructor

Der er ingen kopikonstruktør i Java. Vi kan dog kopiere værdierne fra et objekt til et andet som kopikonstruktør i C++.

Der er mange måder at kopiere værdierne af et objekt til et andet i Java. De er:

  • Af konstruktør
  • Ved at tildele værdierne af et objekt til et andet
  • Ved clone() metode af Object klasse

I dette eksempel skal vi kopiere værdierne af et objekt til et andet ved hjælp af Java constructor.

 //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(); } } 
Test det nu

Produktion:

 111 Karan 111 Karan 

Kopiering af værdier uden konstruktør

Vi kan kopiere værdierne af et objekt til et andet ved at tildele objektets værdier til et andet objekt. I dette tilfælde er det ikke nødvendigt at oprette konstruktøren.

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

Produktion:

 111 Karan 111 Karan 

Q) Returnerer konstruktør nogen værdi?

Ja, det er den aktuelle klasseinstans (Du kan ikke bruge returtype, men den returnerer en værdi).


Kan konstruktør udføre andre opgaver i stedet for initialisering?

Ja, som at oprette objekter, starte en tråd, kalde en metode osv. Du kan udføre enhver operation i konstruktøren, som du udfører i metoden.


Er der Constructor klasse i Java?

Ja.


Hvad er formålet med konstruktørklassen?

Java giver en Constructor-klasse, som kan bruges til at få den interne information fra en konstruktør i klassen. Det findes i java.lang.reflect-pakken.