博客
关于我
接口
阅读量:741 次
发布时间:2019-03-22

本文共 3837 字,大约阅读时间需要 12 分钟。

Java 接口与抽象类深入解析

接口(Interface)解析

  • 接口的定义

    接口是Java编程语言中的抽象类型,是抽象方法的集合。接口通常以interface关键字声明,类通过实现接口来继承接口的抽象方法。

  • 接口与类的区别

    • 接口不能用于实例化对象。
    • 接口没有构造方法。
    • 接口中的所有方法必须是抽象方法。
    • 接口不能包含成员变量,除了staticfinal变量。
    • 接口不是被类继承,而是要被类实现。
    • 接口支持多重继承。
  • 接口的特性

    • 接口中的每一个方法都是隐式抽象的,隐式指定为public abstract
    • 接口中的变量会被隐式指定为public static final,不能使用private修饰。
    • 接口中的方法不能在接口中实现,只能由实现接口的类来实现。
  • 抽象类(Abstract Class)与接口的区别

  • 方法实现

    抽象类中的方法可以有方法体,可以实现具体的功能,而接口中的方法不行。

  • 成员变量

    抽象类中的成员变量可以是各种类型,而接口中的成员变量只能是public static final类型。

  • 静态代码块和静态方法

    抽象类是可以有静态代码块和静态方法的,而接口不能有。

  • 继承与实现

    一个类只能继承一个抽象类,而一个类可以实现多个接口。

  • 接口与抽象类的代码示例

    抽象类实现

    package com.yuhui.a11;
    abstract class Animal {
    protected String name = "";
    protected int shoutNum = 5;
    public String Shout() {
    StringBuffer result = new StringBuffer();
    for (int i = 0; i < shoutNum; i++) {
    result.append("喵喵");
    }
    return result.toString();
    }
    }

    接口实现

    package com.yuhui.a11;
    class Cat extends Animal {
    public Cat() {}
    public Cat(String name) {
    super.name = name;
    }
    protected String getShoutSound() {
    return "喵喵";
    }
    }

    实现接口的类

    package com.yuhui.a11;
    public class MachineCat extends Cat implements IChange {
    public MachineCat() {
    super();
    }
    public MachineCat(String name) {
    super(name);
    }
    public String ChangeThing(String thing) {
    return super.Shout() + "我有万能的口袋,我可变出 : " + thing;
    }
    }

    另一个实现接口的类

    package com.yuhui.a11;
    public class KingMonkey extends Monkey implements IChange {
    public KingMonkey() {
    super();
    }
    public KingMonkey(String name) {
    super(name);
    }
    public String ChangeThing(String thing) {
    return super.Shout() + "我有七十二变,我可变出 : " + thing;
    }
    }

    接口定义

    package com.yuhui.a11;
    interface IChange {
    abstract String ChangeThing(String thing);
    }

    代码执行结果

    • 机器猫: 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 哈哈哈哈"; } }
    执行结果:
    - 机器猫: 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 喵喵 哈哈哈哈
    - 孙悟空: 嗷 嗼 嗷 嗼 嗷 嗼 嗷 嗼 嗷 嗼 嗷 嗼 嗷 嗼 嗷 嗼 嗷 嗼 嗷 嗼 嗷 嗼 嗷

    转载地址:http://ubfwk.baihongyu.com/

    你可能感兴趣的文章
    MySQL Binlog 日志监听与 Spring 集成实战
    查看>>
    MySQL binlog三种模式
    查看>>
    multi-angle cosine and sines
    查看>>
    Mysql Can't connect to MySQL server
    查看>>
    mysql case when 乱码_Mysql CASE WHEN 用法
    查看>>
    Multicast1
    查看>>
    mysql client library_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
    查看>>
    MySQL Cluster 7.0.36 发布
    查看>>
    Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
    查看>>
    MySQL Cluster与MGR集群实战
    查看>>
    multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
    查看>>
    mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
    查看>>
    Multiple websites on single instance of IIS
    查看>>
    mysql CONCAT()函数拼接有NULL
    查看>>
    multiprocessing.Manager 嵌套共享对象不适用于队列
    查看>>
    multiprocessing.pool.map 和带有两个参数的函数
    查看>>
    MYSQL CONCAT函数
    查看>>
    multiprocessing.Pool:map_async 和 imap 有什么区别?
    查看>>
    MySQL Connector/Net 句柄泄露
    查看>>
    multiprocessor(中)
    查看>>