class Main
def say_hello
puts "Hello"
end
private
def say_hi
puts "hi"
end
end
class SubMain < Main
def say_hello
puts "Testing #{say_hi}"
end
end
test = SubMain.new
test.say_hello()
KELUARAN:
Hai
Pengujian
9
CodeCrack
18 Mei 2015, 04:14
1 menjawab
Jawaban Terbaik
Perbedaannya adalah bahwa di Ruby Anda dapat memanggil metode pribadi di subkelas secara implisit tetapi tidak secara eksplisit. Dilindungi bisa disebut dua arah. Adapun mengapa? Saya kira Anda harus bertanya pada Matz.
Contoh:
class TestMain
protected
def say_hola
puts "hola"
end
def say_ni_hao
puts "ni hao"
end
private
def say_hi
puts "hi"
end
def say_bonjour
puts "bonjour"
end
end
class SubMain < TestMain
def say_hellos
# works - protected/implicit
say_hola
# works - protected/explicit
self.say_ni_hao
# works - private/implicit
say_hi
# fails - private/explicit
self.say_bonjour
end
end
test = SubMain.new
test.say_hellos()
13
kellsaro
20 November 2020, 20:50
self
. Metode yang dilindungi dapat dipanggil pada penerima jika penerima berasal dari kelas yang sama atau kelas leluhur. Contoh yang sering dikutip adalah perbandingan:def <=>(other); self.value <=> other.value; end
harus memilikivalue
sebagai publik atau dilindungi, karena nilai pribadi tidak dapat diakses pada objek lain. Ruby "private" hampir sama dengan "protected" di Jawa; itu adalah pergeseran terminologi.98
di01398
, menghasilkan11
; tidak ada alasan penguraian bilangan bulat bahasa lain diharapkan sama buruknya. Ruby memiliki model objeknya sendiri, tidak disalin dari Java atau PHP; itu memenuhi semua persyaratan paradigma OO; dan harus dipelajari dengan caranya sendiri.