, . , " ". : one step to the right and up:
Object (superclass)
^
|
Parent class A(superclass)
^
|
Parent class B(superclass)
^
|
obj -> object class
2) Singleton obj :
Object
^
|
Parent class A(superclass)
^
|
Parent class B(superclass)
^
|
object class(superclass)
^
|
obj -> obj singleton_class
3) , :
Object
^
|
Parent class A
^
|
Module included by Parent Class B
^
|
Parent class B
^
|
object class
^
|
obj -> obj singleton_class
Edit:
,
p method_lookup_chain(Class)
--output:--
[#<Class:Class>, #<Class:Module>, #<Class:Object>, #<Class:BasicObject>]
...
class Object
def greet
puts "Hi from an Object instance method"
end
end
Class.greet
--output:--
Hi from an Object instance method
..
class Class
def greet
puts "Hi from a Class instance method"
end
end
Class.greet
--output:--
Hi from a Class instance method
, , BasicObject (#<Class:BasicObject>):
class BasicObject
class <<self
puts superclass
end
end
--output:--
Class
, , :
Basic Object
^
|
Object
^
|
Module
^
|
Class
^
|
BasicObject BasicObject singleton class
| ^
| |
Object Object singleton class
| ^
| |
Module Module singleton class
| ^
| |
Class ---> Class singleton class
Singleton, . " Ruby" , , , , 3).
:
class A
end
class B < A
end
p method_lookup_chain(B)
--output:--
[#<Class:B>, #<Class:A>, #<Class:Object>, #<Class:BasicObject>]
:
Basic Object
^
|
Object
^
|
Module
^
|
Class
^
|
BasicObject BasicObject singleton class
| ^
| |
Object Object singleton class
| ^
| |
A A singleton class
| ^
| |
B.greet --> B singleton class
, : , , -, .