- Typer konstruktører
- Overbelastning av konstruktør
- Returnerer konstruktøren noen verdi?
- Kopiering av verdiene til ett objekt til et annet
- 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
- Konstruktørnavnet må være det samme som klassenavnet
- En konstruktør må ikke ha noen eksplisitt returtype
- 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:
- Standard konstruktør (no-arg konstruktør)
- Parameterisert konstruktør
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.
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ør | Java-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 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.