У меня есть следующий код Ruby, который содержит alias
в дочернем классе метода, который определен в суперклассе и переопределен в дочернем классе:
class Parent
def hello
print "Hello, I'm Parent!"
end
end
class Child < Parent
alias greet hello
def hello
print "Hi, I'm Child!"
end
end
Когда я вызываю greet
псевдоним экземпляра Child
, он вызывает Parent
реализацию hello
, а не реализацию его собственного класса.Например, с помощью приведенного выше кода, загруженного в irb:
2.3.3 :001 > child = Child.new
=> #<Child:0x007fb1118a8f58>
2.3.3 :002 > child.hello
Hi, I'm Child! => nil
2.3.3 :003 > child.greet
Hello, I'm Parent! => nil
2.3.3 :004 >
Как получить псевдоним, указывающий на локальную реализацию метода вместо реализации родительского класса?