java IS-A关系考试问题混乱

时间:2010-07-13 13:38:48

标签: java inheritance polymorphism scjp

来自MasterExam:

  

哪些陈述属实? (选择全部   适用)

     

A。是一种永远依赖的关系   继承
  B。是一种永远依赖的关系   实例变量
  C。是一种关系总是需要在   至少两类课程   D。是一种永远依赖的关系   多态性
  E。是一种关系永远   紧密耦合

正确答案:A,C,D

我看不出A,C或D中的任何一个是正确的。

Object对象IS-A对象。 String对象IS-A String。每个语句中只有一个类类型,不适用继承或多态。

我的理由是错误还是答案不正确?

6 个答案:

答案 0 :(得分:4)

“关系”是指两个类之间的关系。 is-a关系是一种使用继承的关系(与例如has-a相对,它使用组合)。例如,String是一个Object。一个类不能从它自身继承,这意味着C.作为旁注,一个类可以有自己的组合(has-a)。例如。一个人可以让另一个人作为母亲。

只要有继承,子类的实例就可以用作超类的实例。这是多态性,这意味着D也是对的。

答案 1 :(得分:3)

A。字符串是一个字符串是......一个被认为是显而易见的重言式。但是,查看API文档,您会发现java.lang.String也是java.lang.Object。实际上,所有Java类都继承自java.lang.Object。它们继承了Object的基本属性并添加了自己的其他属性。这就是关系的全部意义。

C。同样,关于任何物体本身的重言式是禅宗佛教徒感兴趣的,但不是语言设计师和其他计算机科学家。因此,要建立“is-a”关系,您需要两个不同的类。

D。我在这里不太确定。如果我被问到,我会说多态性取决于“是 - ”关系,而不是相反。

答案 2 :(得分:1)

您的理由略有偏差,因为此关系适用于,而不适用于对象。

字符串IS-A对象,因为String继承自Object。同样地,FileOutputStream IS-A OutputStream IS-A Object

IS-A是类之间的关系,类和对象之间没有。

答案 3 :(得分:1)

你需要看到它有点不同:

  • 动物
  • 汽车有一个引擎
  • 字符串对象
  • 字符串具有字符数组

试着这样看,它现在应该变得更加清晰。

答案 4 :(得分:1)

我认为A& C现在已经非常清楚......关于D.虽然技术上可能扩展一个没有实例行为或属性的类...(空白或者可能只有静态元素)......但原则上这种失败“扩展”类的目的是为了从继承树上方的类继承行为/功能。 所以,我会说选项D.是正确的(几乎):)(如果我们不太技术).btw这可能是一个有趣的讨论。

答案 5 :(得分:0)

对不起,你的理性错了。他们在谈论两个不同的阶级。例如,String是一个Object。