zoukankan      html  css  js  c++  java
  • 第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();
    }
  • 相关阅读:
    本地复现Zabbix v2.2.x, 3.0.0-3.0.3 jsrpc 参数 profileIdx2 SQL 注入漏洞
    本地搭建复现st2-045漏洞
    Ubuntu安装Vulapps漏洞靶场
    如何在腾讯云Ubuntu服务器安装kali下的神器
    nginx 跳转配置
    Chocolatey 的安装
    MySQL 5.1 主从同步配置
    针对Windows Server 2008 Web 服务 IIS+php 配置的一些心得
    解决IIS7+php的组合上传限制30M的问题
    ssh 文件权限影响登录
  • 原文地址:https://www.cnblogs.com/13jhzeng/p/5705844.html
Copyright © 2011-2022 走看看