说" Foo对象用于..."是否正确?当Foo是一个界面时

时间:2014-06-15 09:42:06

标签: oop terminology

无法从界面创建对象。说“Foo对象用于......”仍然可以接受。或者有必要说“实现Foo的类的对象用于...”

3 个答案:

答案 0 :(得分:1)

  

当Foo是一个接口时,说“Foo对象用于...”是否正确

正如问题所述:

  

无法从界面创建对象[实例]。

Foo是一个界面,说" Foo对象用于"可以阅读/理解为:

  • 可以实现Foo接口
  • 实现Foo接口的类的对象

隐含地依赖读者对第一个陈述进行贴现,并理解第二个陈述。依靠这些假设,最好

实现Foo

的类的对象
  

是否有必要说出类似于"实现Foo的类的对象......"

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

  

实现Foo接口的类的实例

因为它清楚Foo是什么,并且在同时存在Foo接口类的情况下也避免了歧义。

答案 1 :(得分:0)

一个intefrace根本就没有实例,即使它是由一个类实现的(如某些回答中所建议的那样)。

如果一个类实现了一个接口,那么这不会改变接口不能拥有实例的事实。这只会创造一个合同"与类,因为接口是一组功能(属性和方法)。此类的实例仍然是类实例(或对象),而不是接口实例。

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

没有"接口实例" 这样的概念。

UML规范摘录:

  

可能无法实例化接口。相反,一个接口   规范由BehavioredClassifier实现或实现,   这意味着BehavioredClassifier呈现公共外观   符合接口规范。

"接口可能无法实例化"只是另一种说法"接口没有实例"。

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

用伪语言:

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.

答案 2 :(得分:-1)

你可以使用' X instanceof Foo'因此你可以说' Foo对象' ...