/*使用接口的时候,需要注意:
* 1.接口是没有静态代码块或者构造方法的
* 2.一个类的直接父类只有一个,但是一个类可以同时实现多个接口;
* 格式:
* public class MyInterfaceA implements MyInterfaceA, MyInterfaceB{
* //覆盖重写所有抽象方法
* }
*
* 3. 如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可
*
* 4.如果实现类没有覆盖重写所有接口的所有抽象方法,那么实现类就必须是一个抽象类
*
* 5. 如果实现类实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法实现重写
*
* 6. 一个类如果直接父类的方法,和接口中默认的方法起了冲突,优先使用父类当中的方法*/
public interface MyInterfaceA {
//错误写法:接口不能有静态代码块
// static {
//
// }
//错误写法:接口不能有构造方法
// public MyInterfaceA(){
//
// }
public abstract void methodA();
public abstract void methodAbs();
public default void methodDefault(){
System.out.println("默认方法AAA");
}
}
package cn.itcast.day10.demo02;
public interface MyInterfaceB {
public abstract void methodB();
public abstract void methodAbs();
public default void methodDefault() {
System.out.println("默认方法BBB");
}
}
/*
* 1. 类与类之间是单继承的,直接父类只有一个
* 2. 类与接口之间是多实现的,一个类可以实现多个接口
* 3. 接口与接口之间是多继承的
*
* 4. 多个父接口中的抽象方法如果冲突,没关系
* 多个父接口中的默认方法如果冲突,有关系
* */
public interface MyInterfaceA<pu> {
public abstract void methodA();
public abstract void methodCommon();
public default void methodDefault(){
System.out.println("AAA");
}
}
public interface MyInterfaceB {
public abstract void methodB();
public abstract void methodCommon();
public default void methodDefault(){
System.out.println("BBB");
}
}
/*
* 这个子接口中有几个方法?
* 4个方法{
* methodA、methodB、methodCommon、method
* }
* */
public interface MyInterface extends MyInterfaceA, MyInterfaceB{
public abstract void method();
@Override
default void methodDefault() {
}
}
public class MyInterfaceImpl implements MyInterface{
@Override
public void method() {
}
@Override
public void methodA() {
}
@Override
public void methodB() {
}
@Override
public void methodCommon() {
}
}