Ruby/Dziedziczenie: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje) Nie podano opisu zmian |
Szymon wro (dyskusja | edycje) |
||
Linia 5:
Możemy wyrazić tę koncepcję w Rubim:
<source lang="ruby">
</source>
Chociaż nie określamy jak <tt>Kot</tt> powinien oddychać, to każdy kot będzie dziedziczył to zachowanie z klasy <tt>Ssak</tt> ponieważ <tt>Kot</tt> został zdefiniowany jako podklasa klasy <tt>Ssak</tt>. (W terminologii obiektowej, mniejsza klasa jest ''podklasą'', natomiast większa klasa jest ''nadklasą''.) Odtąd, z punktu widzenia programisty, koty uzyskują zdolność oddychania "za darmo". Jak dodamy metodę <tt>daj_glos</tt> nasze koty będą mogły zarówno oddychać oraz mówić.
<source lang="ruby">
mruczek.oddychaj #=> wdech i wydech
</source>
Na pewno wystąpią również takie sytuacje, że niektóre własności nadklasy nie powinny być dziedziczone przez jakąś konkretną podklasę. Chociaż ptaki generalnie potrafią latać, pingwiny są podklasą ptaków nielotnych ([[w:Nielot|nielotów]]).
<source lang="ruby">
def lataj </source>
Zamiast kompletnie definiować każdą cechę każdej nowej klasy, potrzebujemy jedynie dołączyć, a raczej przedefiniować różnice pomiędzy każdą podklasą a jej nadklasą. Takie użycie dziedziczenia jest czasem nazywane ''programowaniem różnicowym''. Jest to jedna z zalet programowania zorientowanego obiektowo.
|