根据我的教科书,类扩展另一个类的能力称为继承。子类继承其超类的所有字段和方法,以及其超类的类型。根据我的教科书第294页,“ Java方法:面向对象的编程和数据结构”,
继承表示对象类型之间的 IS-A 关系。一个 超类定义了其子类对象的更多一般特征;一个 子类定义其他更具体的功能(字段和方法) 并且可以覆盖(重新定义)超类的一些方法。
阅读本段后,我得出结论 John IS-A 人,如果 John extends Person 教科书没有定义 HAS-A 关系,但如果 John 扩展 Person,我认为这是合情合理的。 ,即人 HAS-A John 。这在逻辑上是一致的,并以简单的方式解释了继承。
然而,我的教师为我们分配了一个关于类层次结构和接口的测验。以下问题来自测验。
请考虑以下定义:
public class Brush implements Drawable{...}
public class Canvas extends JPanel
{
private Brush currentBrush;
...
}
public class Painter extends Person
{
private Canvas canvas;
...
}
True 或 False ? 根据显示的代码,下面描述了对象之间的关系:
画布 HAS-A 画笔
教师提供的答案是 True
人 HAS-A 画布
教师提供的答案是 False
画家 HAS-A 画笔
教师提供的答案是 False
所提供的答案在一般意义上是有意义的,但不能满足我通过阅读本书和其他几个在线资源得出的逻辑结论。谁在这里感到困惑?