Java面向对象编程之接口·7
- 什么是接口
- 抽象方法的集合,接口通常以interface来声明,一个类通过继承接口的方式,从而来继承接口的抽象方法
- 语法
interface 名称 [extends 其他的接⼝名] { // 声明变量 // 抽象⽅法 int getMoney(); } 接口的特点
- 接口的特点
- 接口的方法都是抽象方法,默认都是public abstract ,其他修饰符都会报错
- 接口中可以含有变量,但是接口中的变量会被隐性的指定为public static final
- 类描述对象的属性和方法,而接口则包含类要实现的方法
- 接口无法被实例化,需要被实现才行
- 一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类
- 类和接口的区别
- 接口没有构造函数
- 接口里可以有静态方法和方法体
- 接口中所有的方法都必须是抽象方法(JDK8以后就不是了)
- 接口不是被类继承了,而是要被类实现
- 接口支持多继承,类不支持多个类继承
- 接口的实现implements
- 当类实现接口的时候,类要实现接口中所有的方法,不然类必须声明为抽象的类,使用implements关键字实现所有接口
- 语法
class 类名 implements 接⼝名称[, 其他接⼝名称, 其他接⼝名称]{ //要实现的⽅法 }
- JDK8新特性
- interface中可以有static方法,但必须有方法实现体,该方法只属于该接口,接口名直接调用该方法
- 接口中新增default关键字修饰的方法,default方法只能定义在接口中,可以在子类或子接口中被重写,default定义的方法必须有方法体
- 父接口的defalut方法如果在子接口或子类被重写,那么子接口实现对象,子类对象,调用该方法,以重写为准
- 本类,接口如果没有重写父类(即接口)的defalut方法,则在调用default方法时,使用父类定义的defalut方法逻辑
public interface IPay{ // static修饰符定义静态⽅法 static void staticMethod() { System.out.println("接⼝中的静态⽅法"); } // default修饰符定义默认⽅法 ,默认⽅法不是抽象⽅法,可以不重写也可以重写 default void defaultMethod() { System.out.println("接⼝中的默认⽅法"); } }
Bug? 不存在的!