Vad tvingande arv?

Vad tvingande arv?

När en klass ärver från en annan klass, ges det underförstått alla funktioner av sin överordnade klass. Till exempel om vi har en klass foo som har funktioner f1 och f2, och vi skriver en annan klass zed som ärver från klassen foo, kan vi kalla den funktionen zed.f1 eller zed.f2, utan att behöva skriva dem igen. Effektivt, koden för f1 och f2 kopieras från foo till bar.

Åsidosätta är när du vill zed.f1 att göra något annat än vad foo.f1 gör. Genom att skriva om f1 i zed, ändra vi vad den gör i zed utan att ändra vad den gör i foo.

Detta blir viktigt när vi börjar prata om abstraktion. I väldesignade objektorienterade språk, kan vi använda underklasser i stället för deras föräldrar. Till exempel om vi har ännu en klass bar som utför operationer på foo, vi kan ge det en zed istället och det fortfarande skulle fungera, eftersom zed måste ha alla funktioner som foo gör.