Sınıf dışından erişime kapalı metotlardır. Private metotlardan farkı ise, private metotlar kendilerinin
çağıran nesne örneği dışında başka nesne örnekleri üzerinde işlem yapamazken, korumalı metotlar
bu özelliğe sahiptirler.
Örneğimizi güncelleyelim:
class BankaHesabi
def initialize(isim, bakiye = 0)
@isim = isim
@bakiye = bakiye
end
def transfer(hesap, miktar)
aktarma(hesap, miktar)
puts "İşlemden sonra:"
puts "h1 hesabının bakiyesi = #{@bakiye}"
puts "h2 hesabının bakiyesi = #{hesap.bakiye}"
end
protected
attr_accessor :bakiye
def aktarma(hesap, miktar)
@bakiye -= miktar
hesap.bakiye += miktar
end
end
# Nesneleri oluşturalım
h1 = BankaHesabi.new("Ali", 1000)
h2 = BankaHesabi.new("Veli")
# Transfer işlemi
h1.transfer(h2, 300)
Ruby