我有一部分代码,其中一些类正在实现一个接口.
感觉正确,但是在小孩阶段中有一点重复 – 即3种方法.
所以这是尖叫出来使用抽象类.
我的问题是,在以下情况下是否有使用抽象类和接口的任何缺点:
>抽象类来实现接口和子类来扩展抽象类
>子类扩展抽象类并实现接口
要么
抽象类和接口是否应该像这样一起使用?
解决方法
将这两个一起使用是非常正常的.考虑例如JDK中的
AbstractList
(实现列表)和
AbstractMap
(实现Map).
我的膝盖反应本来是让抽象类实现接口,然后具体派生出来的具体类:
abstract class Base implements TheInterface { /* ...shared methods... */ } class Concrete1 extends Base { } class Concrete1 extends Base { }
但是,提出另一种可能性的问题让我想起了,我看不出有太多反对这样做的论据:
abstract class Base { /* ...shared methods... */ } class Concrete1 extends Base implements TheInterface { } class Concrete1 extends Base implements TheInterface { }
此外,我可以看到一个这样做的参数,具体来说它消除了抽象类和接口之间的耦合.如果您有另一个类需要Base提供的功能,但不需要实现该接口,则可以灵活地执行此操作.
还有第三个选项:组合.你根本不能有一个抽象类,而是实现接口的多个具体类在它们的实现中使用一个常用的助手类:
class Helper { /* ...shared methods... */ } class Concrete1 implements TheInterface { /* ...uses instance of Helper */ } class Concrete1 implements TheInterface { /* ...uses instance of Helper */ }
这具有同样的灵活性,以另一种形式.
原文地址:https://www.jb51.cc/java/124175.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。