logo

Konstruktører i Java

  1. Typer konstruktører
    1. Standard konstruktør
    2. Parameterisert konstruktør
  2. Overbelastning av konstruktør
  3. Returnerer konstruktøren noen verdi?
  4. Kopiering av verdiene til ett objekt til et annet
  5. Utfører konstruktøren andre oppgaver i stedet for initialiseringen

I Java , er en konstruktør en blokk med koder som ligner på metoden. Det kalles når en forekomst av klasse er skapt. På tidspunktet for oppkalling av konstruktør blir minnet for objektet allokert i minnet.

Det er en spesiell type metode som brukes til å initialisere objektet.

Hver gang et objekt opprettes ved hjelp av nøkkelordet new() kalles minst én konstruktør.

Den kaller en standardkonstruktør hvis det ikke er noen konstruktør tilgjengelig i klassen. I slike tilfeller gir Java-kompilatoren en standardkonstruktør som standard.

Det er to typer konstruktører i Java: no-arg konstruktør og parameterisert konstruktør.

Merk: Det kalles konstruktør fordi det konstruerer verdiene på tidspunktet for objektskaping. Det er ikke nødvendig å skrive en konstruktør for en klasse. Det er fordi java-kompilatoren oppretter en standardkonstruktør hvis klassen din ikke har noen.

Regler for å lage Java-konstruktør

Det er to regler definert for konstruktøren.

katalog i linux-kommandoer
  1. Konstruktørnavnet må være det samme som klassenavnet
  2. En konstruktør må ikke ha noen eksplisitt returtype
  3. En Java-konstruktør kan ikke være abstrakt, statisk, endelig og synkronisert

Merk: Vi kan bruke tilgangsmodifikatorer mens de erklærer en konstruktør. Den styrer objektskapingen. Med andre ord kan vi ha privat, beskyttet, offentlig eller standard konstruktør i Java.

Typer Java-konstruktører

Det er to typer konstruktører i Java:

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

Java Standard Konstruktør

En konstruktør kalles 'Default Constructor' når den ikke har noen parameter.

Syntaks for standardkonstruktør:

 (){} 

Eksempel på standard konstruktør

I dette eksemplet lager vi no-arg-konstruktøren i Bike-klassen. Det vil bli påberopt når objektet opprettes.
 //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 nå

Produksjon:

 Bike is created 

Regel: Hvis det ikke er noen konstruktør i en klasse, oppretter kompilatoren automatisk en standardkonstruktør.

Java standard konstruktør

Sp) Hva er hensikten med en standardkonstruktør?

Standardkonstruktøren brukes til å gi standardverdiene til objektet som 0, null, etc., avhengig av typen.

Eksempel på standardkonstruktør som viser standardverdiene

 //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 nå

Produksjon:

 0 null 0 null 

Forklaring: I klassen ovenfor oppretter du ingen konstruktør, så kompilatoren gir deg en standard konstruktør. Her er 0- og nullverdier gitt som standardkonstruktør.


Java-parameterisert konstruktør

En konstruktør som har et spesifikt antall parametere kalles en parameterisert konstruktør.

Hvorfor bruke den parameteriserte konstruktøren?

Den parameteriserte konstruktøren brukes til å gi forskjellige verdier til distinkte objekter. Du kan imidlertid også angi de samme verdiene.

Eksempel på parameterisert konstruktør

I dette eksemplet har vi laget konstruktøren til Student-klassen som har to parametere. Vi kan ha et hvilket som helst antall parametere 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 nå

Produksjon:

 111 Karan 222 Aryan 

Konstruktøroverbelastning i Java

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

Konstruktør overbelastning i Java er en teknikk for å ha mer enn én konstruktør med forskjellige parameterlister. De er ordnet på en måte som gjør at hver konstruktør utfører en annen oppgave. De er differensiert av kompilatoren etter antall parametere 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 nå

Produksjon:

 111 Karan 0 222 Aryan 25 

Forskjellen mellom konstruktør og metode i Java

Det er mange forskjeller mellom konstruktører og metoder. De er gitt nedenfor.

Java-konstruktørJava-metoden
En konstruktør brukes til å initialisere tilstanden til et objekt.En metode brukes til å avsløre oppførselen til et objekt.
En konstruktør må ikke ha en returtype.En metode må ha en returtype.
Konstruktøren påkalles implisitt.Metoden påberopes eksplisitt.
Java-kompilatoren gir en standard konstruktør hvis du ikke har noen konstruktør i en klasse.Metoden er ikke gitt av kompilatoren i alle fall.
Konstruktørnavnet må være det samme som klassenavnet.Metodenavnet kan være det samme som klassenavnet.

Java-konstruktører vs. metoder

Java Copy Constructor

Det er ingen kopikonstruktør i Java. Imidlertid kan vi kopiere verdiene fra ett objekt til et annet som kopikonstruktør i C++.

Det er mange måter å kopiere verdiene til ett objekt til et annet i Java. De er:

  • Av konstruktør
  • Ved å tilordne verdiene til ett objekt til et annet
  • Ved clone()-metoden av Object-klassen

I dette eksemplet skal vi kopiere verdiene til ett objekt til et annet ved hjelp av Java-konstruktør.

 //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 nå

Produksjon:

 111 Karan 111 Karan 

Kopier verdier uten konstruktør

Vi kan kopiere verdiene til ett objekt til et annet ved å tilordne objektets verdier til et annet objekt. I dette tilfellet er det ikke nødvendig å opprette 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 nå

Produksjon:

 111 Karan 111 Karan 

Sp) Returnerer konstruktøren noen verdi?

Ja, det er den gjeldende klasseforekomsten (du kan ikke bruke returtype, men den returnerer en verdi).


Kan konstruktør utføre andre oppgaver i stedet for initialisering?

Ja, som å lage objekter, starte en tråd, kalle en metode osv. Du kan utføre hvilken som helst operasjon i konstruktøren slik du utfører i metoden.


Finnes det Constructor-klasse i Java?

Ja.


Hva er hensikten med konstruktørklassen?

Java gir en Constructor-klasse som kan brukes til å få den interne informasjonen til en konstruktør i klassen. Den finnes i java.lang.reflect-pakken.