• 第18条:接口优先于抽象类


    Java提供两种机制,可以用来定义允许多个实现的类型:接口和抽象类。在Java 1.8之前,这两种机制最大的区别是,抽象类允许包含某些方法的实现,但是接口则不允许(这种情况在Java 1.8发布后被改变,接口可以用default修饰符来声明一个有实现的方法。

    接口的好处:

    1.现有的类可以很容易被更新,以实现新的接口。给类增加新行为,只需在声明中增加一个implements子句。

    2.接口是定义混合类型的理想选择,混合类型指类除了实现“基本类型”之外(父类),还可以实现这个混合类型,以表明它提供了某些可供选择的行为,例如Comparable是一个接口,它表明允许它的实例与其他可相互比较的对象进行排序。抽象类不可以定义混合类型,因为类不可能有一个以上的父类。

    3.接口允许构造非层次结构的类型框架,类型层次对组织某些事物非常合适,但有些事物不可能被整齐地组织成一个严格的层次结构,假如有两个接口,singer和songwriter:

    public interface Singer {
        AudioClip sing(Song s);
    }
    
    public interface Songwriter {
        Song compose(boolean hit);
    }

    实际上,有些singer本身也是个songwriter,所以对于单个类而言,同时实现singer和songwriter是被允许的,可以定义第三个接口,同时扩展Singer和Songwriter,并添加一些适合于这种组合的新方法 :

    public interface SingerSongwriter extends Singer, Songwriter {
        AudioClip strum();
        void actSensitive();
    }
  • 相关阅读:
    有序数组(类模板)
    BUUCTF-Web Comment
    BUUCTF-web NiZhuanSiWei
    2020数字中国创新大赛虎符网络安全赛道-pwn count
    BUUCTF-Web Easy Calc
    xctf-web fakebook
    xctf-web supersqli
    xctf-pwn pwn200
    xctf-pwn level3
    利用updatexml()报错注入mysql
  • 原文地址:https://www.cnblogs.com/13jhzeng/p/5705844.html
Copyright © 2020-2023  润新知