一些代码从孩子
class Parent
def print
p "Hi I'm the parent"
end
end
class Child < Parent
def initialize(num)
@num = num
end
def print
child_print
end
def child_print
if @num == 1
#call parent.print
else
p "I'm the child"
end
end
end
c1 = Child.new(1)
c2 = Child.new(2)
c1.print
c2.print
Child
调用父母的方法是Parent
一个实例。 Print
是接口中暴露的方法,并且这两个类都定义了它们。 Child
决定在一个(可能非常复杂的)方法中做其他事情,但会在某些条件下调用其父方法。
我可以只写
def print
if @num == 1
super
else
p "I'm the child"
end
end
而且这样的作品,但如果它不只是一个简单的一行比较,而是在做很多值得被分离成另一种方法,复杂的东西?在决定应该调用父母的方法之前,可能需要做一些计算。
或者也许有不同的更好的方式来设计它。
我不明白这里的问题。您仍然可以通过非常复杂的方法调用“超级”(即使在不同的分支甚至多次)。 – Koraktor
'child_print'应该调用Parent的'print'。我认为super只是在超类中调用同名的方法。或者,我可能不知道如何正确使用'super'。甚至有一个'child_print'的原因是因为我不想让与它无关的东西膨胀到print方法,但仍然需要确定是调用孩子的打印还是父母的打印。 – MxyL
啊,对不起。这里已经很晚了。 ;)一会儿。 – Koraktor