Methode (objectoriëntatie)
In het objectgeoriënteerd programmeren is methode een synoniem van member-functie. Het is dus een functie die behoort tot een klasse. Alle methodes van een object/klasse samen beschrijven zijn interface en zijn gedrag.
De term 'methode' is oorspronkelijk afkomstig uit de taal Smalltalk, maar is daarna veralgemeend voor al het objectgeoriënteerd programmeren.
Constructor
bewerkenEen bijzondere klasse van methodes is die van de constructoren. Een constructor is een functie die aangeroepen wordt als een object gecreëerd wordt. Deze dient om het object te initialiseren. Door overloading kan een klasse meerdere constructoren hebben.
Een bijzonder soort constructor is de copy-constructor. Deze functie maakt een kopie van het object en geeft deze terug. Doorgaans is dit een zogenaamde diepe kopie. Dat wil zeggen dat alle geaggregeerde objecten meegekopieerd worden.
Overerven van methodes
bewerkenBij overerven van methodes komen plots twee varianten kijken.
- concrete functie
- virtuele functie
Het verschil tussen de twee is dat een overgeërfd object in geval van een typeconversie naar zijn ouder (parent) in het geval van een concrete functie de functie van de parent aanroept, en in het geval van de virtuele functie die van het oorspronkelijke object. Voorbeeld in pseudocode:
- klasse Ouder
- virtual v()
- concrete c()
- einde Ouder
- klasse Kind erftvan Ouder
- v() // hoort bij het object, ook na typecast
- c() // hoort bij de klasse Kind
- einde Kind
- functie hoofdprog()
- Kind k;
- ((Ouder)k).v() // dit roept Kind.v() aan, ondanks de typecast
- ((Ouder)k).c() // dit roept Ouder.c() aan na de typecast
- einde hoofdprog
Statische methode
bewerkenEen statische methode is een methode die werkt op het niveau van klassen en niet op het niveau van objecten. Een statische methode hoort niet bij een object maar het hoort bij een klasse: deze methode is uit te voeren zonder een instantie van die klasse aan te maken. Een statische methode kan niet verwijzen naar een instantie (met this
, me
of self
) aangezien de methode niet bij een object hoort.
In C++, C# en Java wordt een statische methode aangegeven met het sleutelwoord static en in Visual Basic .NET wordt het aangeduid met shared.
Een voorbeeld van een statische methode in Java:
public class VoorbeeldKlasse {
public static void statischeMethode()
{
}
public void instantieMethode()
{
}
}
Deze klasse kan als volgt gebruikt worden:
// aanroep van de statische methode
VoorbeeldKlasse.statischeMethode();
// aanroep van de instantiemethode
VoorbeeldKlasse instantie = new VoorbeeldKlasse();
instantie.instantieMethode();