-1

可能重复:
何时使用抽象类或接口?

我知道抽象类和接口。但我想知道一个实时场景,我们只需要使用抽象类而不需要接口,只需要使用接口而不是抽象类。任何人都可以给我一些这样的例子吗?

我猜第二个是在需要多重继承时使用的,即一个类已经继承了某个类,所以我们不能在这里使用抽象类。我们只需要使用接口。同样,我需要一个示例,其中我们仅使用抽象而不使用接口。

已编辑

只是为界面添加更多点。

考虑 java 库集合

                          Collections

            List                                Set

所有 3 都是接口,但最重要的是,尽管它们具有常见的功能,即 add、addAll、contains、containsAll 等。 List 以自己的方式实现,而 set 以另一种方式实现(讲述重复)。设置不允许重复列表允许重复。

所以我想说的是,当超级接口的子接口没有共同特征时,我们必须去接口

但是,如果有一些共同的功能,那么两者都将其保留为抽象类。

我需要一个用java api完成的实际例子。谢谢。信德胡

4

2 回答 2

0

抽象类适用于通用功能,这与定义 API 的接口没有太大关系。

如果除了抽象类的子类之外永远没有实现,则可以跳过接口。我真的想不出一个实际的例子,因为我总是想要接口,所以我可以为单元测试创​​建模拟实现。

跳过抽象类更为常见。在这种情况下,每个项目都遵循一个接口,但不共享任何实现。您可能有一个带有 JDBC、FTP 等实现的“ConnectionService”接口,其中这些实现是如此特定于它们的协议,以至于抽象类没有增加任何价值。

于 2012-05-17T19:35:11.297 回答
0

通常,当您希望您的类能够从链中的前一个类继承时,您会使用超类层次结构。

超类可能是动物

动物可以是草食动物,也可以是肉食动物。

草食动物可以是马。

肉食动物可以是狼。

马可以是牧神。

狼可以是幼崽。

等等。

您通常仅在您想要强制添加某些功能时才实现接口,但会因情况而异,因为接口仅实现方法签名而不是实际功能。你必须这样写。

于 2012-05-17T19:35:16.077 回答