一些代码
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
这行得通,但如果它不仅仅是一个简单的单行比较,而是做很多复杂的事情,应该被分成另一种方法呢?在决定调用父类的方法之前,它可能需要进行一些计算。
或者也许有一种不同的、更好的设计方法。