Bir alt sınıfın davranışlarını, süper sınıfın yöntemlerini yeniden tanımlayarak değiştirebiliriz.
ruby> class Insan
| def tanimla
| print "Ben bir insanim.\n"
| end
| def tren_bileti(yas)
| if yas < 12
| print "Indirimli ucret.\n";
| else
| print "Normal ucret.\n";
| end
| end
| end
nil
ruby> Insan.new.tanimla
Ben bir insanim.
nil
ruby> class Ogrenci1<Insan
| def tanimla
| print "Ben bir ogrenciyim.\n"
| end
| end
nil
ruby> Ogrenci1.new.tanimla
Ben bir ogrenciyim.
nil
|
Örneğin süper sınıfın tanimla yöntemini tamamen yeniden tanımlamak yerine geliştirmek istediğimizi düşünelim. Bunun için super'i kullanıyoruz.
ruby> class Ogrenci2<Insan
| def tanimla
| super
| print "Ben bir ogrenciyim, aynı zamanda.\n"
| end
| end
nil
ruby> Ogrenci2.new.tanimla
Ben bir insanim.
Ben bir ogrenciyim, aynı zamanda.
nil
|
super bizim orijinal yönteme argüman geçmemize izin verir. Bazen iki tür insan olduğunu söylerler...
ruby> class Sahtekar<Insan
| def tren_bileti(yas)
| super(11) # ucuz tarife istiyoruz.
| end
| end
nil
ruby> Sahtekar.new.tren_bileti(25)
Indirimli ucret.
nil
ruby> class Durust<Insan
| def tren_bileti(yas)
| super(yas) # verilen argümanı gecelim
| end
| end
nil
ruby> Durust.new.tren_bileti(25)
Normal ucret.
nil |