使用接口时注意:
1.接口是没有静态代码块或者构造方法的。
package cn.itcast.day09.java.接口静态; /** * @Author: Jason * @Date: 2019/8/3 21:36 * @Version 1.0 */ public interface demoInterface { // static { // 错误写法 // } // public MyInterface(){ 错误写法 接口不能有构造方法 // // } }2.一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。
格式:
publlic class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB{
//覆盖重写所有抽象方法
}
package cn.itcast.day09.java.接口静态; public interface MyInterfaceA { public abstract void methodA(); } package cn.itcast.day09.java.接口静态; public interface MyInterfaceB { public abstract void methodB(); } package cn.itcast.day09.java.接口静态; public class MyInterfaceImpl /* extends Object */ implements MyInterfaceA,MyInterfaceB { @Override public void methodA() { System.out.println("覆盖重写了A方法!"); } @Override public void methodB() { System.out.println("覆盖重写了B方法!"); } }
3.如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。
4.如果实现类没有覆盖重写所有的接口当中的抽象方法,那么实现类就必须是一个抽象类。
5.如果实现类所实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写。
6.一个类如果直接父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类当中的方法。
java中继承优先于接口实现的。
package cn.itcast.day09.java.接口静态; public interface MyInterface { public default void method(){ System.out.println("接口的默认方法!"); } } package cn.itcast.day09.java.接口静态; public class Fu { public void method(){ System.out.println("父类当中的方法!"); } } package cn.itcast.day09.java.接口静态; public class Zi extends Fu implements MyInterface { }
测试一下:
package cn.itcast.day09.java.接口静态; public interface demoInterface { public static void main(String[] args) { Zi zi = new Zi(); zi.method(); } }显示: