请用通俗易懂的语言或文章链接进行解释。


当前回答

extends用于从基类继承时(即扩展其功能)。

implements用于实现接口时。

这里是一个很好的开始:接口和继承。

其他回答

当子类扩展一个类时,它允许子类继承(重用)和重写在父类型中定义的代码。当类实现接口时,它允许在任何期望接口值的上下文中使用从该类创建的对象。

这里真正的问题是,当我们实现任何东西时,这仅仅意味着我们在使用这些方法。它们的值和返回类型没有任何变化的余地。

但是当我们扩展任何东西时,它就变成了类的扩展。您可以更改它,使用它,重用它,它不一定需要返回与在超类中相同的值。

我注意到你的个人资料中有一些C++问题。如果您理解C++的多重继承(指从多个其他类继承特性的类)的概念,Java不允许这样做,但它确实有关键字接口,这有点像C++中的纯虚拟类。正如很多人所提到的,你扩展了一个类(而且你只能从一个类扩展),你实现了一个接口——但是你的类可以实现任意多的接口。

也就是说,这些关键字及其使用规则描述了Java中多重继承的可能性(只能有一个超级类,但可以实现多个接口)。

类只能“实现”接口。类只“扩展”类。同样,一个接口可以扩展另一个接口。

一个类只能扩展另一个类。一个类可以实现几个接口。

相反,如果您更想知道何时使用抽象类和接口,请参考以下线程:接口与抽象类(通用OO)

类和接口都是契约。它们提供应用程序其他部分所依赖的方法和财产。

当您对本合同的实现细节不感兴趣时,可以定义一个接口。唯一需要关心的是契约(接口)是否存在。

在这种情况下,您可以让实现接口的类来关注合同如何履行的细节。只有类才能实现接口。

extends用于替换现有合同的详细信息。通过这种方式,您可以用不同的方式取代一种履行合同的方式。类可以扩展其他类,接口可以扩展其他接口。

扩展:用于将父类的属性获取到子类中,并且可能包含已定义的方法,这些方法可以在子类中重写。

Implements:这用于通过在子类中定义接口来实现接口(仅具有函数签名而不具有函数定义的父类)。

有一个特殊的条件:“如果我希望一个新接口成为现有接口的子接口怎么办?”。在上述条件下,子接口扩展父接口。