Wat is klassenhiërarchie?
Een klassenhiërarchie, ook wel een klasse taxonomie genoemd, is een groep gerelateerde klassen die zijn verbonden door erfenis om soortgelijke dingen te doen. De top van de hiërarchie kan een enkele basisklasse zijn waaruit alle andere klassen eronder zijn afgeleid, of de hiërarchie kan meerdere basisklassen hebben waarvan de functionaliteiten later samengaan in een of meer afgeleide klassen. De relaties tussen de klassen kunnen worden geïllustreerd als bomen, en elke kleinere boom binnen de grote taxonomie kan ook worden beschouwd als een hiërarchie.
Niet alle klassenhiërarchieën kunnen meerdere wortels hebben, en de structuur van elke klassenhiërarchie hangt grotendeels af van de taal waarin het is geschreven. Java® daarentegen is beperkt tot enkele erfenis, dus zijn klassenrelaties zijn meestal eenvoudiger, gebouwd als relatief zelfstandige bomen met een enkele wortel. Interface overerving cEn voeg enige complexiteit toe aan een klassenhiërarchie in Java®, maar interfaces worden bijna nooit ingeroepen in zo'n complex kader dat het zou zijn als het samenvoegen van bomen.
De componenten van een klassenhiërarchie kunnen variëren in type en functie, zolang de regels van de taal altijd worden gevolgd met betrekking tot erfenis. Klassen in een hiërarchie kunnen openbaar, beschermd, abstract, concreet of virtueel zijn. Interfaces, globale functies en vrienden kunnen ook worden gebruikt. Afhankelijk van de computertaal, kunnen sommige van deze typen zich beter lenen om overerving te zijn dan andere. Over het algemeen zijn hiërarchieën zeer flexibel en kunnen ze op veel manieren worden gebruikt voor veel doeleinden.
Er zijn geen harde regels over waar bepaalde soorten klassen in een hiërarchie moeten worden geplaatst. Elke klasse kan mogelijk alle hierboven genoemde typen zijn. Over het algemeen zijn de laatste klassen in de hiërarchie die niet zijn afgeleidDe lessen onder hen moeten openbaar en concreet zijn. Aangezien puur abstracte klassenhiërarchieën ook kunnen bestaan, is dit echter slechts een vuistregel.
Hoewel een klassenhiërarchie een nuttig hulpmiddel kan zijn om code te organiseren en functionaliteit in te kapselen, kunnen er momenten zijn waarop het te diep in een hiërarchie duiken, de code zelfs kan verwarren in plaats van het te verduidelijken en gemakkelijker te onderhouden. Het opbouwen van een robuuste relatie tussen vele klassen kost een bepaalde hoeveelheid vooruitziende blik; Hoewel het in eerste instantie misschien gemakkelijker is om code in veel kleine stukjes te breken, kunnen die kleine stukjes later moeilijker worden om te hanteren. Wanneer het goed is gebouwd, helpt een klassenhiërarchie zowel ontwikkelaars als gebruikers bij het bepalen hoe klassen werken. Als het wordt gebouwd zonder onderhoud en duidelijkheid in gedachten, kunnen de vele niveaus van overerving verwarrend zijn om terug te kijken en te begrijpen.