使用接口时注意:
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();
}
}
显示: