Java继承:区分IS-A和HAS-A关系

时间:2015-12-17 01:18:08

标签: java oop inheritance terminology

根据我的教科书,类扩展另一个类的能力称为继承。子类继承其超类的所有字段和方法,以及其超类的类型。根据我的教科书第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

所提供的答案在一般意义上是有意义的,但不能满足我通过阅读本书和其他几个在线资源得出的逻辑结论。谁在这里感到困惑?

0 个答案:

没有答案