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

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

Java 接口与抽象类深入解析

接口(Interface)解析

  • 接口的定义

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

  • 接口与类的区别

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

    • 接口中的每一个方法都是隐式抽象的,隐式指定为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/

    你可能感兴趣的文章
    Python3 - 在字符串格式化程序参数中使用变量
    查看>>
    Python3 A*寻路算法实现
    查看>>
    python3 grpc安装
    查看>>
    python3 mysql 封装多表_python3 mysql-多表查询
    查看>>
    python3 mysql8_Python MySQL8.0 错误:authentication plugin 'calling_sha2_password' is not supported....
    查看>>
    Python关键代码总览!从Zero到Hero必看的考点
    查看>>
    python3 robotframework+pycharm框架搭建
    查看>>
    Python3 shutil模块
    查看>>
    Python关于strftime函数详细解析 附实战代码
    查看>>
    Python3 tutorial day3
    查看>>
    python3 week4
    查看>>
    Python3 创建数组
    查看>>
    python3 套接字异常(a byte-like object is required not str)
    查看>>
    python3 实现用户三次输入错误记录黑名单并对该用户登录锁定-day1
    查看>>
    python3 文本变图片
    查看>>
    Python3 查看 com 组件的属性
    查看>>
    python3 案例分享--发邮件
    查看>>
    python3 模板库_Python3 标准库概览_Python教程_我爱模板网 - 提供下载各种免费建站资源,免费网站模板,免费网页特效,让你爱上建站!...
    查看>>
    Python3 求最大/小值及索引值 Numpy
    查看>>
    python3+django使用celery执行某些任务失败的解决方案
    查看>>