Java 接口是否可以继承多个接口?

Java 接口是否可以继承多个接口?

我们都知道,Java类是单继承,那接口可以多继承吗?

答案是:Java 接口是可以继承多个接口的

Java不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A如何决定该继承那一个呢?

但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。

注意:

1)一个类如果实现了一个接口,则要实现该接口的所有方法,包括该接口继承的接口的所有方法。

2)方法的名字、返回类型、参数必须与接口中完全一致。如果方法的返回类型不是void,则方法体必须至少有一条return语句。

3)因为接口的方法默认是public类型的,所以在实现的时候一定要用public来修饰(否则默认为protected类型,缩小了方法的使用范围)。

我们写个代码来验证下:

public interface Human {

    public void say();

    public void run();
}
public interface Man {

    public void say();

    public void jump();
}
public interface Student extends Human,Man{

}

Human类和Man类都拥有say() 方法,也有各自的方法。Student多继承了Human,Man,我们编写一个Student的实现类

public class StudentImpl implements Student{
    @Override
    public void say() {
        System.out.println("StudentImpl say...");
    }

    @Override
    public void jump() {

    }

    @Override
    public void run() {

    }
}

测试方法

public class TestDemo{

    public static void main(String[] args) {
        Student student = new StudentImpl();
        student.say();
    }
}

输出

StudentImpl say...

我们可以看到,程序正常输出了,并不会因为多继承接口里有同一个方法而冲突。

在这个类中,只有一个say方法实现了,同时也没有为有多个say要实现而冲突。同时,如果删除了接口Man中的say方法,也只有一个say方法得到了实现并且没有为多个say要实现而出现什么冲突。

所以,我们可以得到一个结论,当编译器在实现接口的时候会依然检查接口Student、Human和Man中的方法声明,如果后两者有与前者相冲突的方法声明,编译器将只要求类实现前者的声明,而后两者中相同的方法声明将自动被忽略。而当只有后两者中有相同的方法声明时,编译器将实现其中的一个即可。就好像是编译器中有一个专门存储方法声明的Set一样,在有继承关系的接口中,只保存一次相同的方法声明。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值