类在什么条件下实现接口?

foo*_*ill 2 java oop inheritance interface

在使用此声明时,我刚想出来:

Queue<T> q = new LinkedList<T>();
Run Code Online (Sandbox Code Playgroud)

据我所知,这Queue是一个接口,LinkedList类"实现"Queue拥有的所有方法(add remove peek等).

但是,我查看了LinkedList(openjdk6)的源代码,却发现该类没有显式实现Queue接口.

public class LinkedList<E>
   extends AbstractSequentialList<E>
   implements List<E>, Deque<E>, Cloneable, java.io.Serializable
Run Code Online (Sandbox Code Playgroud)

然后我读了源代码,Deque<E>看看Deque接口扩展Queue接口.这是否意味着通过实施Deque,LinkedList还在实施Queue及其所有祖先?

另外,如果我有一个实现了接口中所有方法的类,我可以使用接口类型分配该类的对象而不使用"implements"关键字吗?

rge*_*man 7

是的,继承是可传递的,具有接口和子类.即如果B扩展AC实现B,则C实现A.

不,你所描述的是"鸭子打字".

在使用面向对象编程语言的计算机编程中,duck typing是一种键入方式,其中对象的方法和属性确定有效的语义,而不是从特定类或显式接口的实现继承.

这意味着,如果它像鸭子一样走路,像鸭子一样嘎嘎叫,那么它必定是一个Duck.但是,在Java中,不支持鸭子输入.类必须显式实现接口或扩展类才能分配给该接口类型或超类类型.