class auto
{
protected:
auto(){}
auto(int motor){}
~auto(){}
void wielen();
void motor();
void kleur();
};
clas mercedes : public auto
{
mercedes(){}
~mercedes(){}
void kleur();
};
int main()
{
mercedes *pMercedes = new mercedes;
pMercedes->kleur();
return 0;
}
Een heel simpel voorbeeld, maar het moet voldoende zijn om het idee van overerving duidelijk
te maken. Wat hier gebeurt is dus dat de klasse mercedes alle protected dataleden van auto erft
alsof ze dus eigenlijk in de klasse mercedes staan. Wat opvalt is dat ik nu in plaats van public
of private protected gebruik. Het verschil is dat public dataleden altijd opgeroepen kunnen worden
door elke functie of door elke klasse. Protected dataleden kunnen echter alleen maar door afgeleide
klassen opgeroepen worden wat uiteraard veel "veiliger" is.Stel nu dat je de klasse mercedes wilt gebruiken door bijvoorbeeld "mercedes mijnmercedes;" te schrijven. Als eerste wordt dan de auto constructor opgeroepen en vervolgens de mercedes constructor, een mercedes erft namelijk de eigenschappen van auto dus die zal er al moeten zijn voor de mercedes. Je ziet nu ook dat de auto twee constructors heeft die opgeroepen worden afhankelijk van wat voor waarden je aan de klasse meegeeft. Als je bijvoorbeeld zegt "mercedes mijnmercedes;" dan wordt de auto(); constructor opgeroepen. Als je echter schrijft "mercedes mijnmercedes(150);" dan wordt de auto(int motor); constructor opgeroepen. Hetzelfde geldt voor de mercedes klasse als deze meerdere constructors bezit. Het laatste dat hier gebeurt is dat het datalid kleur wordt overloaded. Je ziet dat in de klasse auto een datalid bestaat met de naam kleur en dat deze in de klasse mercedes nog een keer voorkomt. Als je dit datalid oproept wordt het datalid kleur van de klasse mercedes opgeroepen. Het voordeel is uiteraard dat je een standaard kleur in kunt stellen, maar als je een andere kleur wilt je deze met gemak kunt overloaden en de auto een andere kleur kunt geven. Als je dan toch het kleur datalid van auto wilt oproepen kun je dat altijd doen door te schrijven "mijnauto.auto::kleur();" en dan blijft de auto de kleur die je in de basis klasse hebt gedefinieerd. Een korte maar krachtige tutorial moet ik zeggen maar in de praktijk leer je het meeste. Op zich is dit niet zo moeilijk en raad ik je ook aan om dit gewoon een beetje uit te proberen dan merk je vanzelf hoe makkelijk het is om klassen op deze manier te gebruiken. Bovendien leer je dit vanzelf wel goed te gebruiken als je wat verder gaat richting het game programmeren, je hebt nu in ieder geval de basis kennis. Succes Vampire, |