Chiarimento su controllo dell'accesso ai metodi

Ciao.
Per favore mi potete confermare che le seguenti cose che ho capito sul
controllo dell’accesso ai metodi siano vere:

1 - Se non dichiarato altrimenti ogni metodo creato è pubblico;
2 - Quando definisco un metodo di fatto lo definisco publico, è in un
secondo momento che informo Ruby che il metodo è privato o protetto
tramite le seguenti istruzioni: private :nome_metodo o protected
:nome_metodo (:nome_metodo è il simbolo/etichetta relativa al metodo).

Ho capito bene?
Ciao e grazie.
KioSirio

class MyClass
def a

end

protected
def b
end

private
def c
end
end

Tutti i metodi definiti

dopo la keyword ‘protected’ sono protetti, lo stesso
accade per
‘private’.

Tra l’altro, che differenza c’è tra “private” e “protected” ?

Walter

Puoi anche fare così

class MyClass
def a
end

protected
def b
end

private
def c
end
end

Tutti i metodi definiti dopo la keyword ‘protected’ sono protetti, lo
stesso
accade per ‘private’.

Luca

http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Classes

Luca

Tra l’altro, che differenza c’� tra “private” e “protected” ?

I metodi protected possono essere chiamati da altre istanze dello stesso
oggetto.

Esempio:

class MyClass
def uguale?(other)
self.a == other.a
end

def uguale_due?(other)
self.b == other.b
end

protected

def a

end

private

def b

end
end

foo1 = MyClass.new
foo2 = MyClass.new

foo1.uguale? foo2 # true o false

foo1.uguale_due? foo2 # errore! foo1 non può chiamare un metodo private
di foo2!