04-17.eri-test Java周二生效! 优先于抽象类的接口

面向对象编程的超级能力之一是具有相同类型的多个实现的能力。这可以允许更强大的用法的更干净的代码。Java提供了两种主要机制来完成此任务介面抽象类。两者之间的主要区别在于,为了扩展抽象类,实现类必须成为该抽象类的子类。为了实现接口,实现类仅需满足该类的一般约定。

接口的优点是什么:

  • 可以在事实之后添加接口。
    • 类层次结构是事实之后要更改的相当沉重且僵化的东西,而接口可以非常简单地添加并且不会更改现有类的语义。一世>
    一世>接口允许混合行为。
    • 一种
混入是除类的主要用途之外的附加行为。例如, 可比是混入的示例。尽管它定义了对象具有某些行为,但它并没有脱离对象的根类型。一世>接口允许共享行为,而无需依赖层次结构
  • 类迫使我们使用扩展来添加行为。这就要求我们建立一个层次结构来实现这一点。虽然通过层次结构组织我们的课程可能是适当且有用的,但在很多情况下,这并不是表达这一观点的最有效方法。

有效的Java然后进入一种有趣的模式,在这种模式下,我们可以充分利用接口和抽象类。这个想法是将实现的所有部分推到尽可能低的层次,同时仍提供代码帮助者的用户来帮助他们。您可以直接在界面中放很多东西,例如方法签名和默认方法。但是,有些事情我们将无法在界面中提供。例如,成员变量或非公共静态成员。那么在这些情况下我们该怎么办?我们刚刚讨论了应该如何选择接口,但是我们可能会感到,尤其是接口相当复杂或复杂(请考虑清单接口),我们应该为实现者提供一个开始的位置,或者每个实现都需要或需要的共享功能不适合接口的允许元素。

这是哪里骨架实现是一个有用的结构。一种骨架实现让我们两全其美。实际上,它只是一个抽象类,它实现一个接口,然后实现一个接口的非基本方法。通过这样做,我们可以将大部分工作都花在实现接口上。您经常可以认出这些骨架实现在野外,因为它们经常遵循相同的命名约定,Abstract<Interface>哪里<Interface>是该类为其提供骨架接口的接口的名称。例如,抽象馆藏抽象集等等。正确完成此模式后,实现接口很简单。例如,让我们看看如何实现清单在。。。的帮助下摘要清单骨架实现.

静态的清单<整数>整型ArrayAs清单(整型[]数组){返回 摘要清单<整数> {@Override上市 整数 得到整型 i {返回 数组[i];}@Override上市 整数 整型 i {整型 旧值 = 数组[i];数组[i] = i;返回 旧值;}@Override上市 整型 尺寸() {返回 数组.长度;}}; }

就是这样,清单在这三个简短的覆盖函数中。 当您想到一切时,这真是太神奇了清单为我们做。 这样做的好处是没有人被迫使用骨架实现, if someone wants to start from scratch and implement the 整型erface they are free to, the thing people are dependent on is the 整型erface, not the 骨架实现。 最后,正如我们在上一章的回顾中了解到的那样,我们应确保记录这些内容。骨架实现以及它们是为继承而实现的。

In summary, 整型erfaces are usually the way to define a shared type and when you create a nontrivial 整型erface you should consider creating a 骨架实现界面的功能,以帮助未来课程的创建者。

from: https://dev.to//kylec32/effective-java-tuesday-prefer-interfaces-to-abstract-classes-21cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值