- Typer av konstruktörer
- Konstruktör överbelastning
- Returnerar konstruktorn något värde?
- Kopiera värdena för ett objekt till ett annat
- Utför konstruktören andra uppgifter istället för initieringen
I Java , är en konstruktor ett block med koder som liknar metoden. Det kallas när en instans av klass är skapad. Vid tidpunkten för anrop av konstruktorn allokeras minnet för objektet i minnet.
Det är en speciell typ av metod som används för att initiera objektet.
Varje gång ett objekt skapas med nyckelordet new() anropas minst en konstruktor.
Den anropar en standardkonstruktor om det inte finns någon tillgänglig konstruktor i klassen. I sådana fall tillhandahåller Java-kompilatorn en standardkonstruktor som standard.
Det finns två typer av konstruktörer i Java: no-arg konstruktor och parametriserad konstruktor.
Notera: Det kallas konstruktor eftersom det konstruerar värdena vid tidpunkten för objektskapandet. Det är inte nödvändigt att skriva en konstruktor för en klass. Det beror på att java-kompilatorn skapar en standardkonstruktor om din klass inte har någon.
Regler för att skapa Java-konstruktör
Det finns två regler definierade för konstruktören.
hur man förvandlar en sträng till en int
- Konstruktörens namn måste vara detsamma som dess klassnamn
- En konstruktör får inte ha någon uttrycklig returtyp
- En Java-konstruktor kan inte vara abstrakt, statisk, slutgiltig och synkroniserad
Obs: Vi kan använda åtkomstmodifierare samtidigt som du deklarerar en konstruktör. Den styr objektskapandet. Med andra ord kan vi ha privat, skyddad, offentlig eller standardkonstruktor i Java.
Typer av Java-konstruktörer
Det finns två typer av konstruktörer i Java:
- Standardkonstruktör (no-arg constructor)
- Parameteriserad konstruktör
Java Default Constructor
En konstruktor kallas 'Default Constructor' när den inte har någon parameter.
Syntax för standardkonstruktor:
(){}
Exempel på standardkonstruktor
I det här exemplet skapar vi no-arg-konstruktorn i Bike-klassen. Det kommer att anropas när objektet skapas. |
//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(); } }Testa det nu
Produktion:
Bike is created
Regel: Om det inte finns någon konstruktor i en klass, skapar kompilatorn automatiskt en standardkonstruktor.
F) Vad är syftet med en standardkonstruktor?
Standardkonstruktorn används för att tillhandahålla standardvärdena till objektet som 0, null, etc., beroende på typen.
Exempel på standardkonstruktor som visar standardvärdena
//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(); } }Testa det nu
Produktion:
0 null 0 null
Förklaring: I klassen ovan skapar du ingen konstruktor så kompilatorn ger dig en standardkonstruktor. Här tillhandahålls 0- och null-värden som standardkonstruktor.
Java Parameterized Constructor
En konstruktor som har ett specifikt antal parametrar kallas en parameteriserad konstruktor.
Varför använda den parametriserade konstruktorn?
Den parametriserade konstruktorn används för att tillhandahålla olika värden till distinkta objekt. Men du kan också ange samma värden.
Exempel på parametriserad konstruktor
I det här exemplet har vi skapat konstruktorn för Student-klassen som har två parametrar. Vi kan ha hur många parametrar som helst i konstruktorn.
//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(); } }Testa det nu
Produktion:
111 Karan 222 Aryan
Konstruktörsöverbelastning i Java
I Java är en konstruktor precis som en metod men utan returtyp. Det kan också överbelastas som Java-metoder.
Konstruktör överbelastning i Java är en teknik för att ha mer än en konstruktör med olika parameterlistor. De är arrangerade på ett sätt så att varje konstruktör utför olika uppgifter. De särskiljs av kompilatorn genom antalet parametrar i listan och deras typer.
Exempel på konstruktörsöverbelastning
//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(); } }Testa det nu
Produktion:
111 Karan 0 222 Aryan 25
Skillnad mellan konstruktor och metod i Java
Det finns många skillnader mellan konstruktörer och metoder. De ges nedan.
Java-konstruktör | Java metod |
---|---|
En konstruktor används för att initiera ett objekts tillstånd. | En metod används för att exponera ett objekts beteende. |
En konstruktör får inte ha en returtyp. | En metod måste ha en returtyp. |
Konstruktorn anropas implicit. | Metoden åberopas explicit. |
Java-kompilatorn tillhandahåller en standardkonstruktor om du inte har någon konstruktor i en klass. | Metoden tillhandahålls inte av kompilatorn i alla fall. |
Konstruktörens namn måste vara samma som klassnamnet. | Metodnamnet kan vara detsamma som klassnamnet. |
Java Copy Constructor
Det finns ingen kopieringskonstruktor i Java. Vi kan dock kopiera värdena från ett objekt till ett annat som copy constructor i C++.
Det finns många sätt att kopiera ett objekts värden till ett annat i Java. Dom är:
- Av konstruktör
- Genom att tilldela ett objekts värden till ett annat
- Genom clone()-metoden av klassen Object
I det här exemplet kommer vi att kopiera värdena för ett objekt till ett annat med hjälp av Java-konstruktorn.
//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(); } }Testa det nu
Produktion:
111 Karan 111 Karan
Kopiera värden utan konstruktor
Vi kan kopiera ett objekts värden till ett annat genom att tilldela objektets värden till ett annat objekt. I det här fallet finns det inget behov av att skapa 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(); } }Testa det nu
Produktion:
111 Karan 111 Karan
F) Returnerar konstruktorn något värde?
Ja, det är den aktuella klassinstansen (du kan inte använda returtyp men den returnerar ett värde).
java samlingar java
Kan konstruktören utföra andra uppgifter istället för initiering?
Ja, som att skapa objekt, starta en tråd, anropa en metod, etc. Du kan utföra vilken operation som helst i konstruktorn som du utför i metoden.
Finns det konstruktörsklass i Java?
Ja.
Vad är syftet med Constructor-klassen?
Java tillhandahåller en konstruktorklass som kan användas för att få intern information om en konstruktor i klassen. Det finns i paketet java.lang.reflect.