Oop 这样说对吗;“Foo对象用于…”;当Foo是一个接口时

Oop 这样说对吗;“Foo对象用于…”;当Foo是一个接口时,oop,terminology,Oop,Terminology,无法从接口创建对象。说“Foo对象用于…”是否仍然可以接受。或者有必要说“实现Foo的类的对象用于……”这样的话吗?你可以使用“X instanceof Foo”,因此你可以说“Foo Objects”…一个intefrace根本就不能有实例,即使它是由类实现的,也不能有实例 如果一个类实现了一个接口,这不会改变接口不能有实例的事实。这将只创建与类的“契约”,因为接口是一组特性(属性和方法)。此类的实例仍然是类实例(或对象),而不是接口实例 接口只能实现或用于引用实现它的类的实例。接口是一种类型

无法从接口创建对象。说“Foo对象用于…”是否仍然可以接受。或者有必要说“实现Foo的类的对象用于……”这样的话吗?你可以使用“X instanceof Foo”,因此你可以说“Foo Objects”…

一个intefrace根本就不能有实例,即使它是由类实现的,也不能有实例

如果一个类实现了一个接口,这不会改变接口不能有实例的事实。这将只创建与类的“契约”,因为接口是一组特性(属性和方法)。此类的实例仍然是类实例(或对象),而不是接口实例

接口只能实现或用于引用实现它的类的实例。接口是一种类型

没有“接口实例”这样的概念

UML规范摘录:

接口不能被实例化。而是一个接口 规范由BehavioredClassifier实现或实现, 这意味着BehavioredClassifier呈现了一个公共外观 符合接口规范的

“接口可能不会被实例化”只是“接口没有实例”的另一种说法

作为一种UML类型,可以使用接口访问实现它的类的实例。因此,您可以定义一个接口类型的变量。但是,必须实例化相应的类才能获取实例并将对该实例的引用分配给变量

使用伪语言:

Interface I;

Class C extends I;

I var = new C;    // valid instantiation of the class C!
I var2 = new I;   // this will clearly not work.
当Foo是一个接口时,说“Foo对象用于…”是否正确

不 如问题所述:

无法从接口创建对象[实例]

其中,Foo是一个接口,“Foo对象用于”可以理解为:

  • 可以实例化Foo接口
  • 实现Foo接口的类的对象
读者对第一句话的理解和对第二句话的理解是隐含的依赖。最好不要依赖这些假设

实现Foo的类的对象 是否有必要说“实现Foo的类的对象…”

这是明确的,并且是引用实现Foo接口的对象的适当方式。我个人认为:

实现Foo接口的类的实例


因为什么是
Foo
非常清楚,并且避免了在既有
Foo
接口又有类的情况下出现歧义。

不,你不能(向下投票),请参阅其他评论和我的答案。我不同意,问题不是“我可以实例化接口吗”,而是“我可以引用接口的实现者并将其称为“对象”。。。我想我们都同意这样一个事实:接口不能安装,但可以有一个带有对象的实现者,因此,因为它的“子”是接口的“实例”,我们可以非正式地引用接口的对象,你可以说任何你想说的话,即使它是非常不正确的。你说“你可以使用'X instanceof Foo',因此你可以说'Foo objects'…”所以,你从一个错误的语句('X instanceof Foo')开始,得出了一个错误的结论。如果这不是误导,我不知道是什么。如果X实现了Foo,那么instanceof将返回true,您可能不同意,但它仍然是true…这句话有什么不对?虽然您在技术上是正确的,但我认为这是一个过于迂腐的命运。实现接口的类的实例就是实现接口的实例。事实上,重读问题-1是你对其他答案的唯一咆哮,而实际上没有提供答案
,或者有必要说类似于