Java >> Java tutorial >  >> Java

Java konstruktør

I Java er en konstruktør en særlig metode til initialisering af objekter. Når et klasseobjekt dannes, kaldes konstruktøren. Det er muligt at bruge det til at indstille standardværdierne for objektattributter som følger:

// Creating the Main class in Java
public class JavaConstructor {
  String a;

  // Creating a class constructor for the Main class
  public JavaConstructor() {
    a = "I am the constructor";
  }

  public static void main(String[] args) {
    JavaConstructor objInstance = new JavaConstructor();
    System.out.println(objInstance.a);
  }
}

Det er værd at bemærke, at konstruktørnavnet skal være det samme som klassenavnet, og det kan ikke have en returtype (som void). Derudover aktiveres konstruktøren, når et objekt oprettes. Som standard har alle klasser konstruktører; hvis du ikke selv opretter en, vil Java gøre det for dig. Du vil dog ikke være i stand til at angive startværdier for objektegenskaber i dette tilfælde.

Parametre for konstruktører

Konstruktører kan også acceptere argumenter, som bruges til at opsætte attributter. Konstruktøren er udvidet med en int a parameter i eksemplet nedenfor. Vi sætter a til b (a=b) inde i konstruktøren. Vi leverer et argument på (10) til konstruktøren, når vi kalder det, og det sætter værdien af ​​til 10:

public class JavaConstructor {
  int a;

  public JavaConstructor(int b) {
    a = b;
  }

  public static void main(String[] args) {
    JavaConstructor objInstance;= new JavaConstructor(10);
    System.out.println(objInstance.a);
  }
}

Du kan frit bruge så mange parametre, som du vil:

//filename: JavaConstructor.java
public class JavaConstructor {
  int modelYear;
  String modelName;

  public JavaConstructor(int year, String name) {
    modelYear = year;
    modelName = name;
  }

  public static void main(String[] args) {
    JavaConstructor myCar = new JavaConstructor(2020, "Sedan");
    System.out.println(myCar.modelYear + " " + myCar.modelName);
  }
}

Regler styrer konstruktøren i Java. Disse regler for at skrive en Java-konstruktør er som følger:

  • Konstruktørens navn skal matche klassens navn.
  • Der må ikke være nogen eksplicit returtype i en konstruktør.
  • En abstrakt, statisk, endelig og synkroniseret Java-konstruktør er umulig.

Typer af konstruktører i Java

Java-konstruktører kommer i en række forskellige former og størrelser. I Java er der to typer konstruktører:

  • En standardkonstruktør (no-arg-konstruktør)
  • Konstruktør med parametre

Standardkonstruktør i Java

Når en konstruktør ikke har nogen parametre, kaldes den "Standard konstruktør." Standardkonstruktøren har følgende syntaks:

<class_name>(){}  

Eksempel:Standardkonstruktør

no-arg-konstruktøren af ​​standardConstructor-klassen oprettes i dette eksempel. Det vil blive kaldt, når objektet er oprettet.

//Program creating and calling a default constructor  
class defaultConstructor{  

//creating a default constructor  
defaultConstructor(){
System.out.println("This is the default constructor");

}  
//main method  
public static void main(String args[]){  
//calling a default constructor  
defaultConstructor b=new defaultConstructor();  
}  
}  

Hvis en klasse ikke har en konstruktør, tilføjer compileren en automatisk.

Hvad er formålet med en standardkonstruktør?

Standardkonstruktøren giver objektet standardværdier som 0, null og så videre, afhængigt af typen. En standardkonstruktør, der viser standardindstillingerne, er et eksempel.

// default constructor  example
// show the default values  
class Employee{  
int id;  
String firstName;  
String lastName;  

//method to display the value of id and name  
void display(){System.out.println(id+" "+firstName+" "+lastName);}  
  
public static void main(String args[]){  
// object creation  

Employee empOne=new Employee();  
Employee empTwo=new Employee();  

//displaying values of the object  
empOne.display();  
empTwo.display();  
}  
}  

Compileren oprettede en til os, fordi vi ikke lavede en konstruktør i ovenstående klasse. Standardkonstruktøren giver 0- og null-værdier i dette tilfælde.

Konstruktør med parametre i Java

En parameteriseret konstruktør er en konstruktør, der har et bestemt antal parametre. Hvorfor vil du bruge en parameteriseret konstruktør? Forskellige værdier tildeles andre objekter ved hjælp af den parametriserede konstruktør. Du kan dog angive de samme værdier.

Eksempel:En parameteriseret konstruktør

Vi har udviklet en konstruktør til Employee-klassen med to parametre i dette eksempel. Konstruktøren kan indeholde et vilkårligt antal parametre.

//Program demonstrating the use of the parameterized constructor.  
class Employee{  
    int id;  
    String firstName;  
    String lastName;  

    //creation of a parameterized constructor  
    Employee(int i,String fname, String lname){  
    id = i;  
    firstName;   = fname;  
    lastName;    = lname;
	
    }  

    //method to display the values  
    void display(){System.out.println(id+" "+firstName+" "+lastName);}  
   
    public static void main(String args[]){  

    //creating objects and passing values  
    Employee empOne = new Employee(20,"Thomas","Keen");  
    Employee empTwo = new Employee(30,"Ann","Thompson");  

    //calling method to display the values of object  
    empOne.display();  
    empTwo.display();  
   }  
}

Java Constructor Overloading

En konstruktør ligner en metode i Java, bortset fra at den ikke har en returtype. Ligesom Java-metoder kan det blive overbelastet.

I Java refererer konstruktøroverbelastning til flere konstruktører med varierende parameterlister. De er struktureret, så hver konstruktør gør noget særskilt. Compileren skelner dem ud fra antallet af parametre i listen og deres art.

Eksempel:Overbelastning af en konstruktør i Java

//Program illustrating constructor overloading

class Employee{  
    int id;  
    String firstName;  
    String lastName;  
    int age;
  
    //creation of a two arg constructor  
    Employee(int i,String fname){  
    id = i;  
    firstName = fname;  
    }  
    //creation of a three arg constructor  
    Employee(int i,String fname, String lname){  
    id = i;  
    firstName = fname;  
    lastName = lname;
    }  

  //creation of a four arg constructor  
    Employee(int i,String fname, String lname,int a){  
    id = i;  
    firstName = fname;  
    lastName = lname;
    age=a;  
    }  



    void display(){System.out.println(id+" "+name+" "+age);}  
   
    public static void main(String args[]){  
    Employee empOne = new Employee(20,"Ann");  
    Employee empTwo = new Employee(30,"Thomas","Saks");  
    Employee empThree = new Employee(40,"Jerry","Floyd", 49);  

    empOne.display();  
    empTwo.display();  
    empThree.display();
   }  
}  

Konstruktør til kopiering i Java

I Java er der ingen kopikonstruktør. Men ved at bruge kopikonstruktøren i C++ kan vi kopiere værdier fra et objekt til et andet. I Java er der adskillige metoder til at kopiere værdierne af et objekt til et andet. De er som følger:

  • Brug af constructor
  • Ved at overføre værdierne af et objekt til et andet, kan du oprette et nyt.
  • Brug af Object-klassens clone()-funktion

I dette eksempel vil vi bruge Java-konstruktøren til at replikere værdierne af et objekt til et andet.

// program for  initializing the values from one object to another object.  
class Employee{  
    int id;  
    String firstName;  
    //constructor for initializing an integer and string  
    Employee(int i,String fname){  
    id = i;  
    firstName = fname;  
    }  
    //constructor to initialize another object  
    Employee(Employee empOne){  
    id = empOne.id;  
    firstName =empOne.firstName;  
    }  
    void display(){System.out.println(id+" "+firstName);}  
   
    public static void main(String args[]){  
    Employee empOne = new Employee(20,"Ann");  
    Employee empTwo = new Employee(empOne);  
    empOne.display();  
    empOne.display();  
   }  
}  

Konklusion

Constructor-klassen i Java bruges til at få adgang til de interne oplysninger fra en klasses konstruktør. Konstruktøren kan gøre andre ting end initialisering, såsom at oprette et objekt, starte en tråd eller kalde en metode. I konstruktøren kan du udføre enhver operation i metoden. Java.lang.reflect-pakken indeholder det.

En konstruktør i Java er en kodeblok, der kan sammenlignes med en metode. Når en ny klasseinstans oprettes, påkaldes denne metode. Hukommelse til objektet allokeres, når konstruktøren kaldes.

Det er en specifik slags metode, der bruges til at opsætte et objekt. Mindst én konstruktør kaldes hver gang et objekt oprettes med nøgleordet new(). I dette scenarie opretter Java-kompileren automatisk en standardkonstruktør. Hvis ingen konstruktør er tilgængelig i klassen, bruger den standardkonstruktøren. Der er to typer konstruktører i Java:no-arg og parameteriserede konstruktører.


Java tag