我正在努力理解多重继承与复制和多态性的相互作用。请考虑以下形成经典菱形图案的类。
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 的实例附加到ob_as_c
C 类型的对象,ob_as_c.c
则按预期打印“c”。但是,如果将实例附加到ob_as_b
类型 B 的对象上,则ob_as_b.b
打印也会打印“c”。
这是预期的行为吗?显然,我想ob_as_b.b
打印“b”。