接口是Java中的一种抽象类型,编译之后也是生成.Class文件,接口不是类,接口类似于抽象类,但不同的是,接口是完全抽象的,接口中只允许存在抽象方法,不允许存在普通方法
接口的声明语法为: 修饰符列表 interface 接口名{}
接口无法实例化,一个类实现接口时必须实现接口中所有的抽象方法
接口中的变量会默认添加public static final 关键字 接口中的方法会默认添加public abstract关键字
意味着接口中只能存在抽象方法和常量,我们在写接口时最好不要写默认添加的部分
Java中实现和继承同时出现的时候先继承,再实现
一个类可以实现多个接口,接口之间可以多继承,继承了多个接口的接口实现时需要实现所有父类的接口
在Java8开始,接口中可以写默认方法和静态方法,默认方法的修饰符列表必须为default,默认方法是已经实现的方法,接口中的静态方法必须通过接口名.的方式进行调用。 这些特性的加入可以让已经有大量实现类的接口更方便的进行扩展
在接口和抽象类的选择:接口一般表示扩展的行为,抽象类一般表示应该有的,本身存在的行为
例如狗类,狗应该会跑,但不是所有狗都会导盲,所以一般导盲这种行为添加到接口中,让该实现的子类实现