6

来自 MasterExam:

哪些陈述是正确的?(选择所有适用的)

A. is-a 关系总是依赖于继承
B。is-a 关系总是依赖于实例变量
C。is-a 关系总是需要至少两个类类型
D。is-a 关系总是依赖于多态性
E。is-a 关系总是紧密耦合的

正确答案:A、C、D

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

一个对象对象是一个对象。一个字符串对象是一个字符串。这些语句中的每一个中只有一种类类型,并且不适用继承或多态性。

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

4

6 回答 6

4

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

任何时候你有继承,子类的实例都可以用作超类的实例。那是多态性,这意味着 D 也是正确的。

于 2010-07-13T13:44:28.753 回答
3

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

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

D.我不太确定。如果有人问我,我会说多态性取决于“is-a”关系,而不是相反。

于 2010-07-13T13:49:04.063 回答
1

您的理由略有偏差,因为这种关系适用于classes,而不适用于 objects。

一个字符串 IS-A 对象,因为String继承自Object. 同样是FileOutputStreamIS-A OutputStreamIS-A Object

IS-A 是类之间的关系,而不是类和对象之间的关系。

于 2010-07-13T13:44:30.030 回答
1

你需要看到它有点不同:

  • 动物
  • 汽车引擎
  • String is-a对象
  • 一个字符串有一个字符数组

试着这样看,现在应该更清楚了。

于 2010-07-13T13:44:39.393 回答
1

我认为 A 和 C 点现在已经很清楚了......关于 D.though ,在技术上可能扩展一个没有实例行为或属性的类......(空白或可能只有静态元素)......但是原则上有点违背了“扩展”类的目的,因为你想从继承树上层的类继承行为/功能。所以,我会说选项 D. 是正确的(几乎):) (如果我们不是太技术性的话)。顺便说一句,这可能是一个有趣的讨论。

于 2010-07-13T15:23:26.350 回答
0

对不起,你的理性是错误的。他们在谈论两个不同的课程。例如,String is-a Object。

于 2010-07-13T13:46:00.213 回答