多年前,我有一个关于OO的课程,其中有一个声明。 我忘记了这个陈述,并想帮助它回到记忆中。
这是以下之一:
我知道其中一个而且1必然是完全无效的
你能否对此有所了解?
答案 0 :(得分:2)
我同意IAbstract - 代表与继承或接口无关,所以我不认为任何陈述适用。
在我看来,#2是正确的答案。接口提供实现类必须包含的一组方法,属性和事件。默认情况下,您可以通过继承获得此内容:子类可以使用所有超类的非私有属性,方法和事件。
继承为子类提供实现细节(方法体),而接口则不提供;它只提供给定类中可用的内容。这就是为什么我不认为#3是正确的。
答案 1 :(得分:1)
首先,代表实际上与继承或接口没有任何关系 - 因此我将排除1和4。
其次,请考虑interface
是以下之一:
abstract class SomeInterface {
/*.. do stuff ..*/
}
......或
interface ISomeInterface {
/*.. do stuff ..*/
}
为了有用,这些必须由层次结构下的某个具体类继承。通常,在派生类型时,您可以选择从中派生的某个接口。虽然我从未听过以这种方式表达的陈述,但我会选择#3 - 如果在多项选择题测试中给出。
答案 2 :(得分:0)
您已将问题标记为C#,我可以回复。但代表,继承和 实现的接口可能在语言之间的关键方式上有所不同,所以我不确定有关OO的抽象语句是多么有用。
“代理人可以解决的问题也可以通过界面解决。” -C#4.0在NutShell中
MSDN programming guide interface vs delegate
您当然可以通过接口继承所做的一切,但它可能会导致大量冗余代码。因此,当真正需要C#缺乏时,没有很好的替代多重继承。
你可以用高级语言做任何事情,你可以用汇编语言做,但如果你关注生产力,这可能没什么用。