Constructor
In objectgeoriënteerde programmeertalen is een constructor een bepaald soort methode van een klasse die uitgevoerd wordt wanneer een object van de klasse wordt aangemaakt.
Een constructor is vergelijkbaar met een methode maar het levert geen waarde op en het kan niet overgeërfd worden. De scope van een constructor kan ook anders zijn: in bepaalde talen, zoals Java, kan de constructor niet zelf aangeroepen worden. Constructors hebben vaak dezelfde naam als de klasse waartoe ze behoren. Het doel van een constructor is het initialiseren van de velden van een klasse en het vastleggen van een invariant voor de klasse (indien mogelijk, anders faalt het aanmaken van het object). Een correcte constructor levert een object in een 'geldige' toestand op.
In de meeste programmeertalen is overloading van de constructor mogelijk: een klasse kan meerdere constructors hebben met dezelfde naam maar met verschillende parameters.
De tegenhanger van de constructor is de destructor die uitgevoerd wordt wanneer het object wordt vernietigd.
Copy constructor
Een copy constructor is een constructor die gebruikt kan worden om een kopie van een bestaand object te maken. Deze constructor krijgt als argument dat object mee en de constructor neemt de waarden van de velden van dat object over.
Een voorbeeld van een copy constructor:
public class Vector {
public int x;
public int y;
public int z;
// copy constructor
public Vector(Vector vector) {
this.x = vector.x;
this.y = vector.y;
this.z = vector.z;
}
}
Deze constructor kan als volgt gebruikt worden:
Vector p = new Vector()
p.x = 1;
p.y = 1;
p.z = 1;
Vector q = new Vector(p)
q.x = 2;
Na het uitvoeren van de eerste vier regels bevat de vector p de waarde 1 voor elk van de velden x, y en z. Door het gebruiken van de copy constructor wordt een vector q aangemaakt die aanvankelijk de waarden van vector p heeft: 1 voor x, y en z. Daarna wordt de waarde van x gelijk aan 2. Na afloop heeft q de waarden x = 2, y = 1, z = 1 en p heeft de waarden x = 1, y = 1, z = 1. De velden van vector p zijn dus niet gewijzigd aangezien q, de kopie van p, wordt gewijzigd.
Voorbeeld
Java
Enkele verschillen in Java tussen constructoren en methoden zijn:
- Constructoren leveren geen waarde op
- Constructoren kunnen niet direct aangeroepen worden (met new wordt een constructor uitgevoerd)
- Constructoren kunnen niet synchronized, final, abstract of static zijn
- Constructuren worden altijd uitgevoerd door dezelfde thread
public class Voorbeeld
{
// declaratie van een veld
private int data;
// definitie van een constructor
public Voorbeeld()
{
this(1);
}
// constructor overloading
public Voorbeeld(int input)
{
data = input;
}
}
// instantiatie van een object van de bovenstaande klasse
Voorbeeld e = new Voorbeeld(42);
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.