# Instance\_of? e kind\_of? is-a e has-a

**URL:** <https://www.ruby-forum.com/t/instance-of-e-kind-of-is-a-e-has-a/141067>\
**Category:** IT\
**Created:** [June 21, 2008, 4:25pm UTC](https://www.ruby-forum.com/t/instance-of-e-kind-of-is-a-e-has-a/141067 "2008-06-21T16:25:57Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![njna](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/ac8455/32.png) [@njna](https://www.ruby-forum.com/u/njna)\
**Post date:** [June 21, 2008, 4:25pm UTC](https://www.ruby-forum.com/t/instance-of-e-kind-of-is-a-e-has-a/141067/1 "2008-06-21T16:25:57Z")

</div>

Mi sapete spiegare la differenza tra i metodi instance\_of? e kind\_of?

e tra is-a e has-a?

Grazie mille!

---

<div class="post-metadata">

**Author:** ![njna](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/ac8455/32.png) [@njna](https://www.ruby-forum.com/u/njna)\
**Post date:** [June 21, 2008, 4:54pm UTC](https://www.ruby-forum.com/t/instance-of-e-kind-of-is-a-e-has-a/141067/2 "2008-06-21T16:54:19Z")

</div>

- instance\_of? ti dice se obj è una istanza della classe specificata

\*esempio

1.instance\_of?(Fixnum)  
=\> true

- kind\_of? ci dice se la classe specificata è la classe dell’oggetto che  
invoca il metodo, oppure se è una superclasse dell’oggetto  
\*esempio

i = 1

i.instance\_of?(Numeric)  
=\> false

i.instance\_of?(Fixnum)  
=\> true

i.kind\_of?(Numeric)  
=\> true  
#perchè Numeric è la superclass di Integer che è la superclass di Fixnum)

# infatti 1.class.superclass.superclass =\> Numeric

i.kinf\_of?(Integer)  
=\> true

- is\_a? è un sinonimo di kind\_of?
