一文讲通Java为什么不支持多继承原理

 更新时间:2023年03月27日 16:40:19   作者:Hoeller  
这篇文章主要为大家介绍了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()。

如果你问,那为什么C++中可以支持多继承,那得解释菱形继承、虚继承,本文就不分析了(因为我也不知道)。

以上就是一文讲通Java为什么不支持多继承原理的详细内容,更多关于Java不支持多继承的资料请关注脚本之家其它相关文章!

相关文章

  • java实现Floyd算法

    java实现Floyd算法

    这篇文章主要为大家详细介绍了java实现Floyd算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • SpringCloud修改Feign日志记录级别过程浅析

    SpringCloud修改Feign日志记录级别过程浅析

    OpenFeign源于Netflix的Feign,是http通信的客户端。屏蔽了网络通信的细节,直接面向接口的方式开发,让开发者感知不到网络通信细节。所有远程调用,都像调用本地方法一样完成
    2023-02-02
  • SpringMVC请求的路径变量里面写正则表达式的方法

    SpringMVC请求的路径变量里面写正则表达式的方法

    这篇文章主要介绍了SpringMVC请求的路径变量里面写正则表达式的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • java集合框架的体系结构详细说明

    java集合框架的体系结构详细说明

    最近在一本J2EE的书中看到了很不错的对集合框架的说明文章
    2012-11-11
  • Java练习之潜艇小游戏的实现

    Java练习之潜艇小游戏的实现

    这篇文章主要和大家分享一个Java小练习——利用Java编写一个潜艇小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-03-03
  • Java中的多态用法实例分析

    Java中的多态用法实例分析

    这篇文章主要介绍了Java中的多态用法,较为详细的分析了java中多态的概念与相关的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • SpringBoot增强Controller方法@ControllerAdvice注解的使用详解

    SpringBoot增强Controller方法@ControllerAdvice注解的使用详解

    这篇文章主要介绍了SpringBoot增强Controller方法@ControllerAdvice注解的使用详解,@ControllerAdvice,是Spring3.2提供的新注解,它是一个Controller增强器,可对controller进行增强处理,需要的朋友可以参考下
    2023-10-10
  • Java读取传输FTP文件实现示例

    Java读取传输FTP文件实现示例

    本文主要介绍了Java读取传输FTP文件方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 在 Spring Boot 项目中实现文件下载功能

    在 Spring Boot 项目中实现文件下载功能

    这篇文章主要介绍了在 Spring Boot 项目中实现文件下载功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • springboot中如何替换class文件

    springboot中如何替换class文件

    这篇文章主要介绍了springboot中如何替换class文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02

最新评论