2

下面是超类/子类构造的示例:

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>'
>>
4

1 回答 1

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 类的实例一样)。你不能用另一个类来扩展一个类,但是你可以用一个模块来扩展一个类。

于 2013-05-30T02:14:06.070 回答