- 也是一种抽象,比 [[抽象类]] 更抽象 - 作用 - 帮系统拓展新的功能 - 定义语法 - 使用[[关键字]][[interface]] id:: 625519bb-2a31-4f5a-aa30-0029cb6c9f32 - 定义时可以不写 [[public]] [[abstract]],这两个是默认 - ```java public interface 接口接口名{ void fly(); } ``` - 接口名使用 [[大驼峰]] - 接口不是一种类,还是一种 [[引用数据类型]] - 使用 - [[关键字]][[implements]] - ```java 访问修饰符 class 类的类名 extends 父类 implements 接口{ @Override //重写接口的方法 } ``` - 特点 - 不能实例化,不能用[[new]] - 接口中抽象方法默认为public和abstract - 接口中抽象方法,必须要通过实现类给与实现 - 接口中的抽象方法,实现类可以变成抽象类,就可以不实现 - 类只能单[[继承]],接口可以多实现 - 类只能单继承,接口可以多继承 - 可放置的元素 - 抽象方法 - 静态常量 - ```java public static final int HEIGHT_LIMIT = 3000; //使用 接口.常量名 ``` - JDK1.8之前只能放抽象方法及静态常量 - JDK1.8增加[[default]], [[静态方法]] - ```java default void fly(){} static void cook(){ System.out.println("做饭") } ``` - 接口与类关系 - 接口与类是拓展关系,类之间是继承关系 - 继承体系中本身就有的方法放在抽象类中,如果需要给继承体系拓展新的功能,就放在接口中 - 接口与抽象类区别 - 语法上: - 抽象类用 [[abstract]] ,需要有子类继承实现 - 接口使用 [[interface]] ,需要有实现类来进行实现 - 子类和抽象类为继承关系,实现类和接口时一种实现关系 - 抽象类只能单继承,接口可以多继承,多实现