继承父类并实现多个接口

本文深入探讨Java中接口的实现机制,包括如何正确实现多个接口,处理抽象方法与默认方法的冲突,以及在实现类与父类方法冲突时的解决策略。
package cn.ly.Day.seven.twentytwo;
/*
* 使用接口的时候,需要注意:
* 1.接口是没有静态代码块或者构造方法。
* 2.一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。
* 格式:
* public class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB{
* //覆盖重写所有抽象方法
* }
*3.如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。
* 4.如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。
* 5.如果实现类所实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写。
* 6.一个类如果直接父类当中的方法,和接口类当中的默认方法产生了冲突,优先用父类当中的方法。
* */
public class Demo01Interface {
    public static void main(String[] args) {
        Zi zi=new Zi();
        zi.method();
    }
}

package cn.ly.Day.seven.twentytwo;

public interface MyInterfaceA {
    //错误写法!接口不能有静态代码块
//    static{
//
//    }
    //错误写法!接口不能有构造方法。
//    public MyInterfaceA(){
//
//    }
    public abstract  void methodA();
    public  abstract  void methodAbs();
    public default  void methodDefault(){
        System.out.println("AAA");
    }
}

package cn.ly.Day.seven.twentytwo;

public interface MyInterfaceB {
    //错误写法!接口不能有静态代码块
//    static{
//
//    }
    //错误写法!接口不能有构造方法。
//    public MyInterfaceA(){
//
//    }
    public abstract  void methodB();
    public  abstract  void methodAbs();

    public default  void methodDefault(){
        System.out.println("BBB");
    }
}

package cn.ly.Day.seven.twentytwo;

public abstract  class MyInterfaceAbstract implements  MyInterfaceA,MyInterfaceB {
    @Override
    public void methodA() {

    }

    @Override
    public void methodDefault() {

    }

    @Override
    public void methodB() {

    }
}

package cn.ly.Day.seven.twentytwo;

public class Demo02InterfaceImpl implements  MyInterfaceA,MyInterfaceB {
    @Override
    public void methodA() {
        System.out.println("覆盖重写了A方法");
    }

    @Override
    public void methodAbs() {
        System.out.println("覆盖重写了AB接口都有的方法");
    }

    @Override
    public void methodB() {
        System.out.println("覆盖重写了B方法");

    }
    public  void methodDefault(){
        System.out.println("对接口当中冲突的默认方法进行了覆盖重写");
    }
}

package cn.ly.Day.seven.twentytwo;

public class Fu {
    public void method(){
        System.out.println("父类方法");
    }
}

package cn.ly.Day.seven.twentytwo;

public class Zi extends Fu  implements  MyInterface{


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值