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

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

最佳答案

在用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是一个模块,可以包含或扩展到其他对象中(就像这里的子类的一个实例)不能用其他类扩展类,但可以用模块扩展类。

关于ruby - 两个类之间的上/下级关系?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16826766/

10-13 02:19