![]() Önceki |
![]() İçindekiler |
![]() Sonraki |
| Ruby Kullanıcı Kılavuzu | Metotları Yeniden Tanımlamak |
Bir alt sınıfın davanışlarını, süper sınıfın metotlarını yeniden tanımlayarak değiştirebiliriz.
ruby> class Insan
| def kimlik
| print "Bir kişiyim.\n"
| end
| def tren_bileti(yas)
| if yas < 12
| print "İndirimli ücret.\n";
| else
| print "Normal ücret.\n";
| end
| end
| end
nil
ruby> Insan.new.kimlik
Bir kişiyim.
nil
ruby> class Ogrenci1<Insan
| def kimlik
| print "Öğrenciyim.\n"
| end
| end
nil
ruby> Ogrenci1.new.kimlik
Öğrenciyim.
nil |
Örneğin süper sınıfın kimlik metodunu tamamen yeniden tanımlamak yerine geliştirmek istediğimizi düşünelim. Bunun için super'i kullanıyoruz.
ruby> class Ogrenci2<Insan
| def kimlik
| super
| print "Ben de bir öğrenciyim.\n"
| end
| end
nil
ruby> Ogrenci2.new.kimlik
Bir kişiyim.
Ben de bir öğrenciyim.
nil |
super bizim orijinal metoda 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 bilet istiyoruz.
| end
| end
nil
ruby> Sahtekar.new.tren_bileti(25)
İndirimli ücret.
nil
ruby> class Durust<Insan
| def tren_bileti(yas)
| super(yas) # verilen argümanı geçelim
| end
| end
nil
ruby> Durust.new.tren_bileti(25)
Normal ücret.
nil |
![]() Önceki |
![]() İçindekiler |
![]() Sonraki |