@Kiffi Deine Lösung ist denke ich die sauberste und das, was Erel gemeint hat.
Mit etwas Aufwand könnte man halt in der Kuh-Klasse Setter und Getter für Anzahl Beine implementieren:
Sub setAnzahlBeine(Beine As Int)
Tier.AnzahlBeine = Beine
End Sub
Sub getAnzahlBeine As Int
return Tier.AnzahlBeine
End Sub
Damit versteckst Du dann zwar die Tier-Klasse wieder und hättest die Syntax wie bei der Vererbung. Allerdings musst Du das dann für alle Subklassen machen, wie z.B. Hund und Katze auch. Das produziert also redundanten Code.
Vorteil bei der Composition ist halt, dass Du sofort siehst, aus welche Klasse eine bestimmte Funktion kommt. Macht meiner Meinung nach den Code übersichtlicher als bei der Vererbung.