一、前言
面向接口编程,抽象方法是模板,接口是规范
二、接口的基本内容:
interface IFather{
//静态常量 可以省略static和final关键字
public static final String NAME = "张三";
//抽象方法 可以省略abstract关键字
public void eat();
/*
* 在JDK1.8中新增的静态方法
* */
public static void sleep(){
System.out.println("sleep....");
}
/*
* 在JDK1.8中之后可以在接口中声明default方法
* */
default void run(){
System.out.println("run....");
}
}
三、接口和抽象类的区别?
比较点 | 抽象类 | 接口 |
---|---|---|
定义 | 用abstract关键字来修饰的类 | interfaec关键字来修饰 |
组成 | 抽象方法、普通方法、构造方法、成员变量、常量 | 抽象方法、静态常量、JDK1.8注释 |
使用 | 子类继承(extends) | 实现类实现(implements) |
关系 | 抽象类可以实现接口 | 接口是不能继承抽象类的 |
对象 | 都是通过对象的多态实现的 | 都是通过对象的多态实现的 |
局限 | 不能多继承,不能实例化 | 可以多继承,不能实例化 |
选择 | 建议选择接口,避免单继承 | 建议选择接口,避免单继承 |
实际 | 模板 | 标准 |