加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 抽象类和接口在一起?

发布时间:2020-12-14 17:40:59 所属栏目:Java 来源:网络整理
导读:我有一部分代码,其中一些类正在实现一个接口. 感觉正确,但是在小孩阶段中有一点重复 – 即3种方法. 所以这是尖叫出来使用抽象类. 我的问题是,在以下情况下是否有使用抽象类和接口的任何缺点: 抽象类来实现接口和子类来扩展抽象类 子类扩展抽象类并实现接口
我有一部分代码,其中一些类正在实现一个接口.

感觉正确,但是在小孩阶段中有一点重复 – 即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 */
}

这具有同样的灵活性,以另一种形式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读