NilClass-Ruby继承到底意味着什么?

NilClass-Ruby继承到底意味着什么?,ruby,inheritance,syntax,Ruby,Inheritance,Syntax,新手问题 我认为“继承”是Ruby的基本特性。每个类都从其.class和.superclass继承方法 由于NilClass将Class和Object作为它的.Class和.superclass,您可以假设NilClass拥有它们的所有方法 当我看到这个时,我的大脑爆炸了: >NilClass.class =>类 >>NilClass.class.methods-NilClass.methods =>[:嵌套,:新建] >>幂零类超类 =>对象 >>NilClass.superclass.met

新手问题

我认为“继承”是Ruby的基本特性。每个类都从其
.class
.superclass
继承方法

由于
NilClass
Class
Object
作为它的
.Class
.superclass
,您可以假设
NilClass
拥有它们的所有方法

当我看到这个时,我的大脑爆炸了:

>NilClass.class
=>类
>>NilClass.class.methods-NilClass.methods
=>[:嵌套,:新建]
>>幂零类超类
=>对象
>>NilClass.superclass.methods-NilClass.methods
=>[:新的]
发生了什么事

有人能解释一下Ruby中整个继承机制背后到底发生了什么吗

继承在Ruby中到底意味着什么

我认为“继承”是Ruby的基本特性。每个类都从其
.class
.superclass
继承方法

没错。每个类都从其超类继承方法,默认情况下超类是
Object

class Foo
end

Foo.superclass #=> Object
Foo
响应
Object
的类方法,
Foo
实例响应
Object
的实例方法

此外,每个类都是
class
的实例,因此响应
class
”实例方法(就像
Foo
实例响应
Foo
的实例方法一样):

在纯Ruby中也可以这样做:

Foo.singleton_class.send(:undef_method, :new)
Foo.new
#=> NoMethodError: undefined method `new' for Foo:Class

这其中哪一点令人惊讶呢?
NilClass
并没有
Class
Object
的所有方法,即使它们是类和超类?你可能想看Dave Thomas的讲座,题目是,。非常感谢!这才是真正让我讨厌的东西:-)
Foo.singleton_class.send(:undef_method, :new)
Foo.new
#=> NoMethodError: undefined method `new' for Foo:Class