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.