以下是超类/子类构造的示例:
C:\>irb --simple-prompt
>> class Parent
>> @@x = 10
>> end
=> 10
>> class Child < Parent
>> @@x = 12
>> end
=> 12
>> class Parent
>> puts "@@X = #{@@x}"
>> end
@@X = 12
=> nil
以上也是可以理解的。但是我想检查是否可能,当两个类被单独定义为独立类时,无论如何定义它们之间的超/子关系?
我尝试了以下但它不起作用。可能不是我尝试的方式:
C:\>irb --simple-prompt
>> class Parent
>> @@X = 10
>> end
=> 10
>> class Child
>> @@x = 15
>> end
=> 15
>> class Child < Parent
>> def show
>> p "hi"
>> end
>> end
TypeError: superclass mismatch for class Child
from (irb):7
from C:/Ruby193/bin/irb:12:in `<main>'
>>
答案 0 :(得分:0)
在Ruby中声明类的超类之后,您无法更改它的超类。但是,如果要在类上包含特定行为,可以使用模块扩展它们。
module Parent
def yell_at_kids
puts "Stop hitting your brother!"
end
end
class Child
def have_children
extend Parent
end
end
Child.new.have_children.yell_at_kids
在这种情况下,Parent是一个可以包含或扩展到其他对象的模块(比如我们的Child类的实例)。您无法使用其他类扩展类,但可以使用模块扩展类。