接口优于抽象类

本文探讨了接口优于抽象类的原因,包括现有类容易扩展、定义混合类型、构造非层次结构的类型框架、通过包装类增强功能以及利用抽象骨架实现简化编码。这五个理由揭示了接口在Java编程中的重要性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《Effective Java》第20条:接口优于抽象类。

原因一:现有的类可以很容易被更新,以实现新的接口

现有的类想实现新的功能,可以继承一个或者多个接口即可。而如果一个已经继承了某个超类的类,不可能再去继承一个抽象类,只能继承接口。从这个角度而言,一个类无论是否继承了超类,都可以很方便的通过继承接口来扩展自身。

原因二:接口是定义 mixin (混合类型)的理想选择

混合类型,我找了最通俗移动的解释,如果一个类已经有了一个主要的超类型,那么通过实现一个接口,这个类可以拥有另一个次要的超类型,这种次要的超类型叫做混合类型。所以说接口是非常理想的混合类型工具。

原因三:接口允许构造非层次结构的类型框架 

由于接口多继承的特性,其非常适合非层次的类型框架。比如,Singer歌手和Songwriter作曲家两个接口,有的人同时具备这两种属性,如下面代码,采用接口继承的方式,非常容的将进行组合。

public interface Singer{
    AudioClip sing(Song s);
}

public interace Songwriter{
    Song compose(int cha 「tPosition);
}

public interface SingerSongwriter extends Singer, Songwriter{
    Audi oClip strum();
    void actSensitive();
}

原因四:通过包装类( wrapper class )模式, 接口使得安全地增强类的功能成为可能 

在子类和父类中添加转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值