繁体   English   中英

java中的抽象class和接口如何实现抽象?

[英]How abstract class and interface achieve abstraction in java?

一般来说,抽象被定义为隐藏不必要的信息并只显示对用户来说必不可少的内容。 但是抽象 class 和接口是如何实现的呢?

通常,该方法是您只向用户显示您传递回给他们的 object 的接口,而不是实现该接口的精确 class。 接口是必不可少的实现,确切的 class 是不必要的信息。

抽象类和接口的目的与隐藏任何东西无关。

接口

您可以将接口视为合同。 编译器确保实现此接口的任何非抽象 class确实具有接口中声明的所有方法。 实现此接口的类没有任何其他限制。

抽象类

抽象的 class 定义了 class 最重要的功能。 它是一种骨架。 它允许子类提供它们自己的抽象方法实现。

在某些情况下,目的是重用公共代码。 如果在特定情况下有意义,则可以创建默认实现 class。 但在许多情况下,默认的 class 没有意义。 例如,在 Java 中有AbstractCollection 它定义了所有集合类的共同行为。 默认集合是没有意义的,因为一些开发人员可能期望默认实现是一个列表,其他人期望一个集合和 smb。 将期望它是无序集合(不像列表)并允许重复(不像集合)。

在其他情况下,抽象 class 可用于定义一些不应在子类中更改的核心逻辑。 那么公开的class中的一些方法就可以做成final了。

如果我们比较接口和抽象类,我们可以将接口视为纯抽象,而抽象类更具体,它们通常会实现一些逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM