拼音:方法别名:子类 - 父类



>我有以下内容:

class Parent
  def A
    return 'A'
  end
  def B
    return 'B'
  end
end
class Child < Parent
  def A
    super
    return 'Child.A'
  end
  def B
    super
    return 'Child.B'
  end
end

当我这样做时: p 儿童。 ==> 儿童

然后我在上面的代码下面添加了这个。

class Child < Parent
  alias method_of_child_A A
  def A
    method_of_child_A
  end
end

当我这样做时

p Child.A
=> A

它返回我"A",而不是"Child.A"。我正在寻找孩子。我希望语法也能够执行以下操作。

Class GrandChild < Child
  alias method_of_GrandChild_A A #if Grandchild.A doesn't exist, 
                                 #it will alias Child.A instead.
                                 #Which what alias does basically.
  def A
    method_of_GrandChild_A
  end
end

所以当我这样做时: p 孙子 => 儿童。

我对别名功能不太熟悉,所以有人可以启发我吗?谢谢!

我相信

您的代码已经按照您的预期工作:

require 'pry'
class Parent
  def A; 'A'; end
  def B; 'B'; end
end
class Child < Parent
  def A; 'Child.A'; end
  def B; 'Child.B'; end
end
class Child < Parent
  alias method_of_child_A A
  def A
    method_of_child_A
  end
end
p Child.new.A #=> "Child.A"

我的编辑是装饰性的,使代码稍微短一些。

最新更新