8.19. Kontrolowanie dostępu — metody prywatne, publiczne i chronione
Problem
Chcemy uczynić pewną metodę dostępną wyłącznie do wewnętrznego użytku klasy, niedostępną dla tworzonych jej obiektów.
Rozwiązanie
Należy umieścić słowo kluczowe private
przed definicją wspomnianej metody, dzięki czemu stanie się ona niedostępna na zewnątrz klasy. W poniższym przykładzie definiowana jest metoda inicjująca (initialize
), jedna metoda prywatna (secret
) i jedna metoda publiczna (hint
):
class TajemnaLiczba def initialize @secret = rand(20) end def hint puts "Liczba jest #{"nie " if secret <= 10}większa niż 10." end private def secret @secret end end s = TajemnaLiczba.new s.secret # NoMethodError: private method 'secret' called for #<TajemnaLiczba:0x82aea38 ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.