Если вам явно не нужно вызывать A # a из B # b, а нужно вызывать A # a из B # a, что фактически делает то, что вы делаете с помощью B # b (если вы не Пример не достаточно полный, чтобы продемонстрировать, почему вы звоните из B # b, вы можете просто вызвать super изнутри B # a, как это иногда делается в методах инициализации. Я знаю, это довольно очевидно, я просто Я хотел бы уточнить для новичков в Ruby, что вам не нужно использовать псевдоним (в частности, это иногда называют «псевдонимом вокруг») в каждом случае.
class A
def a
# do stuff for A
end
end
class B < A
def a
# do some stuff specific to B
super
# or use super() if you don't want super to pass on any args that method a might have had
# super/super() can also be called first
# it should be noted that some design patterns call for avoiding this construct
# as it creates a tight coupling between the classes. If you control both
# classes, it's not as big a deal, but if the superclass is outside your control
# it could change, w/o you knowing. This is pretty much composition vs inheritance
end
end