我的Java学习之接口

接口

  • 语法

    [修饰符]interface 接口名 [extends 父接口名列表]{
    [public][static][final]常量;//关键字默认有
    [public][abstract]方法;//关键字默认有

    }
    [修饰符]可选值.可选public或默认的default
    [extends 父接口列表];可选;

    • JDK1.8以前

      • 接口里面只允许有公开静态的常量和公开抽象的方法
    • JDK1.8

      • 还允许非抽象的静态方法和默认方法(default关键字修饰)

        • 资料

          Java 8 允许给接口添加一个非抽象的方法实现,只需要使用 default 关键字即可,这个特征又叫做扩展方法(也称为默认方法或虚拟扩展方法或防护方法)。在实现该接口时,该默认扩展方法在子类上可以直接使用,它的使用方式类似于抽象类中非抽象成员方法。

          扩展方法不能够重写(也称复写或覆盖) Object 中的方法,却可以重载Object 中的方法。
          如:toString、equals、 hashCode 不能在接口中被覆盖,却可以被重载。

          默认方法允许我们在接口里添加新的方法,而不会破坏实现这个接口的已有类的兼容性,也就是说不会强迫实现接口的类实现默认方法。

          默认方法和抽象方法的区别是抽象方法必须要被实现,默认方法不是。作为替代方式,接口可以提供一个默认的方法实现,所有这个接口的实现类都会通过继承得到这个方法(如果有需要也可以重写这个方法)

          静态方法,通过static关键字修饰的方法;和普通类的静态方法调用方式一致

  • 定义

    接口是一种特殊的抽象类
    使用interface关键字定义接口
    没有构造方法,不能创建对象
    只能定义:公开静态常量,公开抽象方法
    具体代码:
    public interface C extends interfaceA,interface B{

     int   app=3;
     void  say();
    

    }

  • 规范

    任何类在实现接口时,必须实现接口中所有的抽象方法,否则此类为抽象类
    实现接口的抽象方法时,访问修饰符必须为public

  • 常量接口与枚举

    • 常量接口

      将多个常用于表示状态或固定值的变量,以静态常量的形式定义在接口中统一管理,提高代码可读性.

    • 枚举

      enum Day {
      MONDAY, TUESDAY, WEDNESDAY,
      THURSDAY, FRIDAY, SATURDAY, SUNDAY
      }

  • 接口的思想指导

    • 接口是一种能力

      接口方法代表了生活中的一种能力体现,
      如果说普通类等代表着万物,抽象类代表着抽象的事物,那么能力也是抽象的,代表着着各类中相近方法能力的集合与规范

    • 接口引用与多态

      同父类引用一样,多态的应用也跟父类的一样
      可强转回实现类本身类型

      • 接口多态图
  • 接口与抽象类

    • 相同点

      不能创建对象,能被其它类实现和继承
      都包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法
      可编译成字节码文件
      可以作为引用类型
      具备Object类中所定义的方法

      • 不能实例化
    • 不同点(重点)

      所有属性都是公开静态常量,隐式使用public static final修饰
      所有方法都是公开抽象方法,隐式使用public abstract修饰
      没有构造方法,动态代码块,静态代码块

      具体差别:
      接口中只能包含抽象方法,不能包含普通方法,抽象类可以包含普通方法
      接口中不能定义静态方法;抽象类可以定义静态方法
      接口中只能定义静态常量属性,不能定义普通属性,抽象类里可以定义静态常量属性,也可以定义普通属性
      接口不能包含构造器;抽象类可以包含构造器,抽象类的构造器是为了让其子类调用并完成初始化操作
      接口不能包含初始化块,但抽象类可以包含初始化块
      一个类最多只能有一个直接父类,包含抽象类,但是一个类可以实现多个接口

XMind: ZEN - Trial Version

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值