- Soorten constructeurs
- Overbelasting van de constructeur
- Geeft de constructor enige waarde terug?
- De waarden van het ene object naar het andere kopiëren
- Voert de constructor andere taken uit in plaats van de initialisatie
In Java , een constructor is een codeblok dat lijkt op de methode. Het wordt aangeroepen wanneer een exemplaar van de klas is gecreëerd. Op het moment dat de constructor wordt aangeroepen, wordt geheugen voor het object in het geheugen toegewezen.
Het is een speciaal type methode dat wordt gebruikt om het object te initialiseren.
Elke keer dat een object wordt gemaakt met het trefwoord new(), wordt er minstens één constructor aangeroepen.
Het roept een standaardconstructor aan als er geen constructor beschikbaar is in de klasse. In dat geval biedt de Java-compiler standaard een standaardconstructor.
Er zijn twee soorten constructors in Java: no-arg-constructor en geparametriseerde constructor.
Opmerking: Het wordt constructor genoemd omdat het de waarden construeert op het moment dat het object wordt gemaakt. Het is niet nodig om een constructor voor een klasse te schrijven. Het komt omdat de Java-compiler een standaardconstructor maakt als uw klasse er geen heeft.
Regels voor het maken van een Java-constructor
Er zijn twee regels gedefinieerd voor de constructor.
scanner in java
- De constructornaam moet hetzelfde zijn als de klassenaam
- Een Constructor mag geen expliciet retourtype hebben
- Een Java-constructor kan niet abstract, statisch, definitief en gesynchroniseerd zijn
Opmerking: we kunnen gebruiken toegangsmodificatoren terwijl u een constructor declareert. Het bestuurt de creatie van objecten. Met andere woorden, we kunnen een privé-, beschermde, openbare of standaardconstructor in Java hebben.
Soorten Java-constructors
Er zijn twee soorten constructors in Java:
- Standaardconstructor (no-arg-constructor)
- Geparametriseerde constructor
Java-standaardconstructor
Een constructor wordt 'Default Constructor' genoemd als deze geen parameter heeft.
Syntaxis van standaardconstructor:
(){}
Voorbeeld van standaardconstructor
In dit voorbeeld maken we de no-arg-constructor in de klasse Bike. Het wordt aangeroepen op het moment dat het object wordt gemaakt. |
//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 het nu
Uitgang:
Bike is created
Regel: Als er geen constructor in een klasse aanwezig is, maakt de compiler automatisch een standaardconstructor.
V) Wat is het doel van een standaardconstructor?
De standaardconstructor wordt gebruikt om de standaardwaarden aan het object te geven, zoals 0, null, enz., afhankelijk van het type.
Voorbeeld van een standaardconstructor die de standaardwaarden weergeeft
//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 het nu
Uitgang:
0 null 0 null
Uitleg: In de bovenstaande klasse maakt u geen enkele constructor, dus de compiler biedt u een standaardconstructor. Hier worden 0- en null-waarden geleverd door de standaardconstructor.
Java-geparametriseerde constructor
Een constructor die een specifiek aantal parameters heeft, wordt een geparametriseerde constructor genoemd.
Waarom de geparametriseerde constructor gebruiken?
De geparametriseerde constructor wordt gebruikt om verschillende waarden aan verschillende objecten te geven. U kunt echter ook dezelfde waarden opgeven.
Voorbeeld van een geparametriseerde constructor
In dit voorbeeld hebben we de constructor van de Student-klasse gemaakt met twee parameters. We kunnen een willekeurig aantal parameters in de constructor hebben.
//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 het nu
Uitgang:
111 Karan 222 Aryan
Constructor-overbelasting in Java
In Java is een constructor net een methode, maar zonder retourtype. Het kan ook overbelast raken, net als Java-methoden.
Constructeur overbelasting op Java is een techniek om meer dan één constructor met verschillende parameterlijsten te hebben. Ze zijn zo gerangschikt dat elke constructor een andere taak uitvoert. Ze worden door de compiler onderscheiden op basis van het aantal parameters in de lijst en hun typen.
Voorbeeld van overbelasting van de constructor
//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 het nu
Uitgang:
111 Karan 0 222 Aryan 25
Verschil tussen constructor en methode in Java
Er zijn veel verschillen tussen constructors en methoden. Ze worden hieronder gegeven.
Java-constructeur | Java-methode |
---|---|
Een constructor wordt gebruikt om de toestand van een object te initialiseren. | Er wordt een methode gebruikt om het gedrag van een object bloot te leggen. |
Een constructor mag geen retourtype hebben. | Een methode moet een retourtype hebben. |
De constructor wordt impliciet aangeroepen. | De methode wordt expliciet aangeroepen. |
De Java-compiler biedt een standaardconstructor als er geen constructor in een klasse aanwezig is. | De methode wordt in ieder geval niet door de compiler geleverd. |
De constructornaam moet hetzelfde zijn als de klassenaam. | De naam van de methode kan al dan niet hetzelfde zijn als de klassenaam. |
Java-kopieconstructor
Er is geen kopieerconstructor in Java. We kunnen de waarden echter van het ene object naar het andere kopiëren, zoals de kopieerconstructor in C++.
Er zijn veel manieren om de waarden van het ene object naar het andere te kopiëren in Java. Zij zijn:
doe while-lus in Java
- Door constructeur
- Door de waarden van het ene object aan het andere toe te wijzen
- Via de clone()-methode van de objectklasse
In dit voorbeeld gaan we de waarden van het ene object naar het andere kopiëren met behulp van de 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 het nu
Uitgang:
111 Karan 111 Karan
Waarden kopiëren zonder constructor
We kunnen de waarden van het ene object naar het andere kopiëren door de objectwaarden aan een ander object toe te wijzen. In dit geval is het niet nodig om de constructor te maken.
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 het nu
Uitgang:
111 Karan 111 Karan
V) Geeft de constructor een waarde terug?
Ja, het is de huidige klasse-instantie (u kunt het retourtype niet gebruiken, maar het retourneert een waarde).
Kan de constructor andere taken uitvoeren in plaats van initialisatie?
Ja, zoals het maken van objecten, het starten van een thread, het aanroepen van een methode, enz. U kunt elke bewerking in de constructor uitvoeren zoals u in de methode uitvoert.
Is er een Constructor-klasse in Java?
Ja.
Wat is het doel van de Constructor-klasse?
Java biedt een Constructor-klasse die kan worden gebruikt om de interne informatie van een constructor in de klasse op te halen. Het is te vinden in het pakket java.lang.reflect.