在C#中,常规类不能从静态类继承。 Ruby的类似情况似乎是:
class Foo
class << self
def test
"this is test"
end
end
end
class Bar < Foo
def test
puts super
end
end
Bar.new.test # >> error
常规类Bar
是否可以从Foo
继承并覆盖test
?
答案 0 :(得分:1)
Bar
是否可以从Foo
继承
您已经正确完成了该部分
并覆盖
test
?
您需要将Bar.test
定义为类方法,但是您编写的是实例方法定义(和调用)。试试
class Bar < Foo
class << self
def test
super + ", man"
end
end
end
Bar.test
#=> "this is a test, man"
Ruby中没有诸如静态类或方法之类的东西,因此实例方法调用Bar.new.test
永远不会像类方法调用Bar.test
那样指代相同的东西。静态方法的概念。