Programmeren in Java/Overerving: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
DimiC88 (overleg | bijdragen)
k Eerste aanzet om hoofdstuk te herschrijven.
Label: bewerking met nieuwe wikitekstmodus
Bdijkstra (overleg | bijdragen)
caveat
Regel 1:
{{Programmeren in Java|Deel=Klassen}}
Nu dat je klassen hebt gezien en misschien ondertussen meerdere klassen hebt gemaakt, zal het misschien al hebben gemerkt dat je klassen hebt die verwant zijn aan elkaar. Je hebt misschien een klasse geschreven voor een ''Car'' (auto), ''Bus'', ''Bicycle'' (fiets), enzoverder.. Allemaal zijn ze voertuigen, machines die we gebruiken om ons te verplaatsen. Ze hebben misschien bepaalde eigenschappen of functionaliteit gemeen. Sommige hebben een motor andere niet, sommige hebben passagiers andere weer niet, sommige hebben bovendien véél passagiers en andere minder, enzoverder...
 
Je kunt deze eigenschappen en functionaliteiten per klasse apart definiëren, maar dat is weer véél dubbel werk en kan ook weer leiden tot meer fouten. Wat je kunt doen is voor deze klassen een overkoepelende klasse maken die alle eigenschappen en functionaliteiten kan bevatten en waar de onderliggende klassen gebruik van kan maken.
 
==SimpleSimpel voorbeeld==
 
 
==Uitgebreid voorbeeld==
In onderstaand voorbeeld is de klasse ''BankAccount''(bankrekening) de verzameling van alle gemeenschappelijke velden en methoden. De klassen ''SavingsAccount'' (spaarrekening) en ''CurrentAccount'' (zichtrekening) bevatten de gespe­cia­liseerdegespecialiseerde gegevens. Men spreekt in dit verband ook over generalisatie en specialisatie. De klasse ''BankAccount'' is de basisklasse (of de superklasse of de parentklasse) van de ''SavingsAccount'' en de ''CurrentAccount''. De ''SavingsAccount'' en de ''CurrentAccount'' zijn de subklassen (of de childclasses of de derived- of afgeleide klassen) van de ''BankAccount''.
 
<syntaxhighlight lang="java">
public class BankAccount {
private final String accountNumber;
public double amount;
 
Regel 37:
<syntaxhighlight lang="java">
public class CurrentAccount extends BankAccount {
private final int maxCredit;
 
public CurrentAccount(String accountNumber, int maxCredit) {
Regel 66:
public void withdraw(double amount) {
this.amount -= amount;
}
 
public void overschrijven(SavingsAccount spaarRek, double amount) {
this.amount -= amount;
spaarRek.deposit(amount);
}
 
Regel 102 ⟶ 97:
}
</syntaxhighlight>
 
(Merk op dat ''double'' een binaire komma heeft en dus niet geschikt is voor exacte berekeningen met decimale fracties. In het echt zou hier een integertype voor gebruikt worden.)
 
{{sub}}
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.