typowy przykład ze zwierzyńcem
Masz klasę zwierzę. Zwierzę może wydać głos i podać swoje imię(imie jest parametrem klasy zwierze, a wydawanie głosu metodą abstrakcyjną, czyli taką, której nie można wywołać, bo nie jest zdefiniowana. Należy ją zdefiniować na klasach potomnych). Tworzysz klasy dziedziczące po zwierzęciu. Kot, który wydając głos mówi "miau" i ma metodę "wskocz na szafę". Pies mówi "hau" i ma metodę aportuj. Tworzymy sobie listę zwierzaków. Możemy do niej wrzucać zarówno psy i koty (jak i inne obiekty klas dziedziczących po zwierzęciu). Możemy teraz stworzyć sobie kilka kotów i kilka psów. Powiedzmy, że koty będą się nazywały "Filemon" i "Bonifacy" a psy "Reksio" i "Pluto". Możemy teraz pętlą foreach poprosić każde zwierzę o wydanie głosu (Bo zwierze posiada taką metodę) i otrzymamy dwa razy "hau" i dwa razy "miau", bo program wykona dwa razy kod metody "wydaj głos" napisany w psie i dwa razy w kocie. Ponadto możemy na tej liście wywołać metodę zwracającą imiona. Możemy też kazać konkretnemu psu aportować, ale nie możemy tego nakazać żadnemu kotu.
Chyba napiszę kod do tego bo się to okrutnie tłumaczy tak na sucho.