我不是在找你给我答案,我只是要求解释,让我了解如何找到答案。
假设我们有一个包含A,B,C和D四个类的项目。我们有以下变量:
A; B b; C c; D d;
以下作业都是合法的(它们都是编译的):
a = b; a = c; d = b;
以下分配是非法的(它们会导致编译器错误):
c = d; d = c; d = a;
绘制这些类之间的继承关系。
感谢帮助,谢谢:)
答案 0 :(得分:4)
合法分配意味着左侧变量的类是右侧类的超类。
a = b
表示b位于a的子类层次结构中的某个位置,换句话说,a是b的祖先。
如果它不编译,则表示这不是有效的分配。
从“合法”赋值,你可以推断出b是a的子类,c是a的子类,b是d的子类。
希望这应该足以让你继续下去。
答案 1 :(得分:1)
这是一种可用于开发图表的方法。在四个类的集合之间绘制每个可能的继承行。如果赋值是合法的,那么与该关系对应的继承行可以标记为有效。如果赋值是非法的,则可以删除与该关系对应的继承行。完成后,其余行应包含最终的继承映射。
答案 2 :(得分:1)
如果类X继承自类Y,则可以将对象x分配给类型为Y的变量,如下所示:
y = x;
如果2个类没有继承,那么这是不可能的,并且会出现编译错误。
旁注:这意味着您只能访问Y的方法,即使它仍然是X类的对象。
答案 3 :(得分:0)
这是一个提示:只有一个有效的层次结构符合给定的约束条件。
绘制有向无环图。如果赋值有效,则从分配的值的类型(右侧)到指定的变量类型(左侧)绘制一个箭头。如果赋值无效,则该方向上没有箭头。这将生成类似于UML的内容,其中派生类中的箭头指向其超类。