【发布时间】:2015-12-06 13:29:54
【问题描述】:
我很难理解多重继承与复制和多态性的相互作用。请考虑以下形成经典菱形图案的类。
deferred class A
feature
a deferred end
end
deferred class B
inherit A
rename a as b end
end
deferred class C
inherit A
rename a as c end
end
class D
inherit
B
C
select c end
feature
b do print("b") end
c do print("c") end
end
如果我将 D 的实例附加到 C 类型的对象 ob_as_c,则 ob_as_c.c 会按预期打印“c”。但是,如果将实例附加到 B 类型的对象 ob_as_b,那么 ob_as_b.b 也会打印 print "c"。
这是预期的行为吗?显然,我希望ob_as_b.b 打印“b”。
【问题讨论】:
标签: polymorphism multiple-inheritance eiffel