J'ai juste commencé à jouer avec JRuby. C'est ma première ruby post. J'ai eu du mal à comprendre classes vs objets en Ruby. Il ne signifie pas que comme ce que les classes et les objets des autres orientée Objet de langues. pour un exemple
Class.is_a? Object
retourne true et
Object.is_a? Object
trop.
tellement de classe et d'Objet sont à la fois des objets
voici un autre
Class.is_a? Class
retourne true et
Object.is_a? Class
trop.
attendez, je ne suis pas encore fait
Object.instance_of? Class
Class.instance_of? Class
Les deux sont vrais
Object.instance_of? Object
Class.instance_of? Object
Les deux sont fausses. droit, rien ne peut être instance de l'objet.
Et
Class.kind_of? Class
Object.kind_of? Class
les deux sont vrais
Class.kind_of? Object
Object.kind_of? Object
les deux sont vrais
Donc les deux sont exactement les mêmes, alors, pourquoi avons-nous ces deux.?
Après quelques plus de creuser, j'ai écrit cette simple méthode pour retourner la liste de méthodes prises en charge par les deux
irb(main):054:0> def print_methods(obj)
irb(main):055:1> obj.methods.each do |mm|
irb(main):056:2* puts mm
irb(main):057:2> end
irb(main):058:1> end
Seule la méthode de la différence entre print_methods(Objet) et print_methods(Classe) est
Nesting
si l'Imbrication signifie l'héritage, l'Objet Est similaire à la classe scellée??
Quelqu'un peut-il me préciser ce qui est tout cela?
Mise à jour: À Jed commentaire
Il est intéressant de noter, je vois beaucoup de différences dans la méthode de la liste dans
c=Class.new
print_methods(c)
et
o=Object.new
print_methods(o)
Maintenant, je comprends Instance d'une classe est vraiment une instance de classe (Et cette instance de classe est en fait un Objet) pas une instance d'objet. Et même en ce cas permettez-moi de durée un autre cas
xx = c.new //works - c is an Object / and xx is a instance of an Object c
yy = o.new //nope - o is already a instance of an Object, so it cannot be instantiated again
Donc, Finalement, l'Objet est vraiment une instance d'une Classe. Parce que
xx.is_a? Class
est faux, mais
xx.is_a? Object
retourne true
Suis-je en droit, ??