来自 MasterExam:
哪些陈述是正确的?(选择所有适用的)
A
. is-a 关系总是依赖于继承
B
。is-a 关系总是依赖于实例变量
C
。is-a 关系总是需要至少两个类类型
D
。is-a 关系总是依赖于多态性
E
。is-a 关系总是紧密耦合的
正确答案:A、C、D
我看不出A,C或D中的任何一个是正确的。
一个对象对象是一个对象。一个字符串对象是一个字符串。这些语句中的每一个中只有一种类类型,并且不适用继承或多态性。
我的理由是错误的还是答案不正确?
来自 MasterExam:
哪些陈述是正确的?(选择所有适用的)
A
. is-a 关系总是依赖于继承
B
。is-a 关系总是依赖于实例变量
C
。is-a 关系总是需要至少两个类类型
D
。is-a 关系总是依赖于多态性
E
。is-a 关系总是紧密耦合的
正确答案:A、C、D
我看不出A,C或D中的任何一个是正确的。
一个对象对象是一个对象。一个字符串对象是一个字符串。这些语句中的每一个中只有一种类类型,并且不适用继承或多态性。
我的理由是错误的还是答案不正确?
“关系”是指两个类之间的关系。is-a 关系是一种使用继承的关系(与使用组合的 has-a 相对)。例如,String is-a Object。一个类不能从自身继承,这意味着 C。作为旁注,一个类可以与自身具有组合(has-a)。例如,一个人可以有另一个人作为母字段。
任何时候你有继承,子类的实例都可以用作超类的实例。那是多态性,这意味着 D 也是正确的。
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”关系,而不是相反。
您的理由略有偏差,因为这种关系适用于classes,而不适用于 objects。
一个字符串 IS-A 对象,因为String
继承自Object
. 同样是FileOutputStream
IS-A OutputStream
IS-A Object
。
IS-A 是类之间的关系,而不是类和对象之间的关系。
你需要看到它有点不同:
试着这样看,现在应该更清楚了。
我认为 A 和 C 点现在已经很清楚了......关于 D.though ,在技术上可能扩展一个没有实例行为或属性的类......(空白或可能只有静态元素)......但是原则上有点违背了“扩展”类的目的,因为你想从继承树上层的类继承行为/功能。所以,我会说选项 D. 是正确的(几乎):) (如果我们不是太技术性的话)。顺便说一句,这可能是一个有趣的讨论。
对不起,你的理性是错误的。他们在谈论两个不同的课程。例如,String is-a Object。