2011-08-24 130 views
0

我想,当一个类实现一个接口,它是说,它“可以做”什么在interface.I定义我也下印象是“是”或符号“类型”是类层次结构,这意味着一类从超类继承。我的理解是否正确?通过实现一个接口,类是否成为该接口的“类型”?

+0

基于这里的文章:http://codeofdoom.com/wordpress/2009/02/12/learn-this-when-to-use-an-abstract-class-and-an-interface/。它说当一个类扩展一个抽象类时,它建立了“是A”关系,但是它与接口建立了“可以做”关系。如果抽象类和接口都建立“IS A”关系,那么接口的用法是什么?让我们不要进入多重继承和其他基本的东西.... – user325643

+0

不知道为什么这是downvoted。人们至少应该评论。 –

回答

3

从标题的问题,我会说没有。

已经有答案说是通过阅读它指出了Java语言规范在使用的instanceof,但显示这一点。

两个参考类型,如果相同的运行时类型: 他们都是类或两种接口类型,是由同一个类加载器定义,并具有相同的二进制名称

而且一实现接口的类将不会收到接口的二进制名称。

2

是。这从使用instanceof运营商是显而易见的:

 interface I { } class A implements I { } ... static boolean isAnI(Object obj) { return (obj instanceof I); } 

这里,呼吁isAnI(new A())将返回true

编辑:理解题意后好转,我认为这归结为正式定义-A在Java中。维基百科有关一般OO定义的文章here。从这个基于继承层次的角度来看,我会将我的答案改为否,同意Farmor的答案。

1

我不能完全肯定我明白你的问题。但是,接口确实说明了类“可以做什么”,但是您也可以投射该接口的对象并运行接口的方法。工作中的多态性。