24继承父类并实现多个接口

Demo01Interface

package InterfaceandExtend;

/*
 * 1.接口不能有静态代码块和构造方法
 * 2.一个类的直接父类是唯一的,但是一个类可以同事实现多个接口。
 * 		public class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB {}
 * 3.如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。
 * 4.如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。
 * 5.如果实现类所实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写。(第3条和第五条是类似的,只要一样,就重写一次,要让程序知道该听谁的话)
 * 6.一个类如果直接父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类当中的方法。(Java中继承大于接口)
 * */

public class Demo01Interface {
    public static void main(String[] args) {
        MyInterfaceABImpl myInterfaceAB = new MyInterfaceABImpl();
        myInterfaceAB.methodA();
        myInterfaceAB.methodB();
        myInterfaceAB.methodAbs();//重写一次即可
        myInterfaceAB.methodDefault();
    }
}

MyInterfaceA.java

package InterfaceandExtend;


public interface MyInterfaceA {
    public abstract void methodA();
    public abstract void methodAbs();
    public default void methodDefault() {
        System.out.println("接口A中的默认方法");
    }
}

MyInterfaceB.java

package InterfaceandExtend;

public interface MyInterfaceB {
    public abstract void methodB();
    public abstract void methodAbs();
    //public abstract void methodElse();
    public default void methodDefault(){
        System.out.println("接口B中默认方法");
    }
}

MyInterfaceABImpl.java

package InterfaceandExtend;

public class MyInterfaceABImpl implements MyInterfaceA,MyInterfaceB{
    @Override
    public void methodA() {
        System.out.println("重写A");
    }

    @Override
    public void methodAbs() {
        System.out.println("重写Abs");
    }

    @Override
    public void methodB() {
        System.out.println("重写B");
    }

    @Override
    public void methodDefault() {
        MyInterfaceA.super.methodDefault();
        //两个中都有,只需要覆盖重写一个,必须要,不然不知道听哪个的话
        System.out.println("对多个接口当中冲突的默认方法进行了覆盖重写");
    }

}

对于第六条:
一个类如果直接父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类当中的方

Fu.java

package InterfaceandExtend.FuZiInterface;

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

Zi.java

package InterfaceandExtend.FuZiInterface;

public class Zi extends Fu implements MyInterface{

}

MyInterface.java

package InterfaceandExtend.FuZiInterface;

public interface MyInterface {
    public default void method(){
        System.out.println("接口的默认方法");
    }
}

Zi.java

package InterfaceandExtend.FuZiInterface;

public class main {
    public static void main(String[] args) {
        Zi zi = new Zi();
        zi.method();
    }
}
//输出结果
//父类的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值