Java-interface

Java-interface
白开水船长定义接口:定义接口中的成员
JDK7及以前:接口中只能定义全局常量和抽象方法:全局常量:public static final 的,但是在接口中书写时,可以省略不写;抽象方法:public abstract 的。JDK8:除了全局常量和抽象方法,还可以定义静态方法、默认方法,二者可以有方法体:
静态方法:只能通过接口来调用;
默认方法:
通过实现类的对象,可以调用接口中的默认方法;如果实现类重写了接口中的默认方法,调用时仍然调用的是重写后的方法;
如果实现类实现了多个接口,而这多个接口中定义了同名同参数的默认方法,那么实现类在没有重写此方法的情况下会报错。——> 接口冲突。这就需要我们在实现类中重写此方法;
如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的默认方法,那么子类在没有重写此方法的情况下,默认调用的是父类中的同名同参数方法。——>类优先原则
注意:类优先原则仅针对方法,不包括属性,见下方面试题1
规定:在子类(或实现类)的方法中可以调用父类、接口中被子类重写的方法,语法如下(见代码演示1):
super.testFunc(); //调用父类中声明的方法
接口.super.testFunc(); // 调用接口中声明的默认方法
接口中不能定义构造器,意味着接口不能被实例化;
Java开发中,接口通过让类去实现(implements)的方式来使用;
如果一个实现类中覆盖了接口中的所有抽象方法,则此实现类可以被实例化;
如果实现类没有覆盖接口中的所有抽象方法,则此实现类仍为一个抽象类。
Java类可以实现多个接口 —> 弥补了Java单继承的局限性;
格式:class AA extends BB implements CC,DD,EE
接口与接口之间可以继承,而且可以多继承;
接口的四种实现方式:(匿名类与匿名对象)
接口面试题
1 | interface A { |
代码演示
1 | public class A extends B implements C{ |
