重学Java(029)—— Java基础知识(接口中的优先级问题、接口中的多继承)

一、接口中的优先级问题

在我们使用接口的时候要注意一些问题,例如:

  1. 接口是没有静态代码块或者构造方法的。
  2. 一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。
    格式:
public class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB {
    //覆盖重写所有抽象方法
}
  1. 如果实现类所实现的多个接口当中存在重复的抽象方法,那么只需要覆盖重写一次即可。
  2. 如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。
  3. 如果实现类所实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写。
  4. 一个类如果直接父类当中的方法,和接口中的默认方法产生了冲突,优先用父类当中的方法。

二、接口中的多继承

在学完类的继承之后,我们知道:类与类之间是单继承的,直接父类只能有一个;类与接口之间是多实现的,一个类可以实现多个接口。那么接口与接口之间的继承关系是如何的呢?

接口与接口之间是多继承的

也就是说:一个接口能继承另一个或者多个接口。

注意:如果多个父接口当中的抽象方法如果重复,那么没关系。但如果多个父接口当中的默认方法出现重复,那么就有关系。此时子接口必须进行默认方法的覆盖重写,【而且带着default关键字】


简单举例说明:

首先定义两个接口来作为父接口:

接口A:

public interface MyInterfaceA {

    public abstract void methodA(); // 抽象方法A

    public abstract void methodCommon(); // 重名抽象方法 

	// 重名默认方法,需要在子接口中进行覆盖重写
    public default void methodDefault() {
        System.out.println("AAA");
    }

}

接口B:

public interface MyInterfaceB {

    public abstract void methodB(); // 抽象方法B

    public abstract void methodCommon(); // 重名抽象方法

	// 重名默认方法,需要在子接口中进行覆盖重写
    public default void methodDefault() {
        System.out.println("BBB");
    }

}

定义的子接口如下:

/*
这个子接口当中有4个方法:
methodA 来源于接口A
methodB 来源于接口B
methodCommon 同时来源于接口A和B
method 来源于自己
 */
public interface MyInterface extends MyInterfaceA,MyInterfaceB {

    @Override
    default void methodDefault() {

    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值