Mİras
Önceki
İçindekiler
İçindekiler
Erişim Kontrolü
Sonraki

 Ruby Kullanıcı KılavuzuMetotları 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


Mİras
Önceki
İçindekiler
İçindekiler
Erişim Kontrolü
Sonraki