# Chiarimento su controllo dell'accesso ai metodi

**URL:** <https://www.ruby-forum.com/t/chiarimento-su-controllo-dellaccesso-ai-metodi/190014>\
**Category:** IT\
**Created:** [June 11, 2010, 12:55pm UTC](https://www.ruby-forum.com/t/chiarimento-su-controllo-dellaccesso-ai-metodi/190014 "2010-06-11T12:55:38Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![axle988](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e47774/32.png) [@axle988](https://www.ruby-forum.com/u/axle988)\
**Post date:** [June 11, 2010, 12:55pm UTC](https://www.ruby-forum.com/t/chiarimento-su-controllo-dellaccesso-ai-metodi/190014/1 "2010-06-11T12:55:38Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![axle988](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e47774/32.png) [@axle988](https://www.ruby-forum.com/u/axle988)\
**Post date:** [June 11, 2010, 3:34pm UTC](https://www.ruby-forum.com/t/chiarimento-su-controllo-dellaccesso-ai-metodi/190014/2 "2010-06-11T15:34:28Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![axle988](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e47774/32.png) [@axle988](https://www.ruby-forum.com/u/axle988)\
**Post date:** [June 11, 2010, 1:05pm UTC](https://www.ruby-forum.com/t/chiarimento-su-controllo-dellaccesso-ai-metodi/190014/3 "2010-06-11T13:05:47Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![axle988](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e47774/32.png) [@axle988](https://www.ruby-forum.com/u/axle988)\
**Post date:** [June 11, 2010, 3:48pm UTC](https://www.ruby-forum.com/t/chiarimento-su-controllo-dellaccesso-ai-metodi/190014/4 "2010-06-11T15:48:02Z")

</div>

[http://en.wikibooks.org/wiki/Ruby\_Programming/Syntax/Classes](http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Classes)

Luca

---

<div class="post-metadata">

**Author:** ![axle988](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e47774/32.png) [@axle988](https://www.ruby-forum.com/u/axle988)\
**Post date:** [July 12, 2010, 10:04pm UTC](https://www.ruby-forum.com/t/chiarimento-su-controllo-dellaccesso-ai-metodi/190014/5 "2010-07-12T22:04:08Z")

</div>

> 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!
