温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java不支持多继承的原因是什么

发布时间:2023-05-06 11:32:14 来源:亿速云 阅读:123 作者:iii 栏目:开发技术

这篇文章主要介绍“Java不支持多继承的原因是什么”,在日常操作中,相信很多人在Java不支持多继承的原因是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java不支持多继承的原因是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

首先,思考这么一种场景,假如现在A类继承了B类和C类,并且B类和C类中,都存在test()方法,那么当A类对象调用test()方法时,该调用B类的test()呢?还是C类的test()呢?是没有答案的,所以Java中不允许多继承。

但是,Java中接口是可以多继承的,比如:

public interface A {
    void test();
}
public interface B {
    void test();
}
public interface C extends A, B{
}

为什么接口可以?

因为都是A、B、C都是接口,就算A、B两个接口中都定义了test方法,因为接口中只是声明了方法,并没有真正实现方法,所以对于C接口而言并不会照成困扰,对于C接口而言它只是继承了同一个test()方法的声明而已,在使用时需要C接口的实现类来实现这个test()方法就可以了。

public class C1 implements C{
    public void test() {
        System.out.println("hello Hoeller");
    }
}

那么接口中不是有default方法吗?那不是也可以在接口中来实现方法吗?

我们直接来测试一下:

public interface A {
    default void test() {
        System.out.println("a");
    }
}
public interface B {
    default void test() {
        System.out.println("b");
    }
}
public interface C extends A, B{
}

此时C接口会编译报错,报错信息为:

com.hoeller.C inherits unrelated defaults for test() from types com.hoeller.A and com.hoeller.B

翻不翻译都无所谓了,反正就是报错了,表示C接口不能同时继承两个接口中default方法test()。

到此,关于“Java不支持多继承的原因是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI