一文讲通Java为什么不支持多继承原理
作者:Hoeller 时间:2023-09-28 23:32:50
首先,思考这么一种场景,假如现在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++中可以支持多继承,那得解释菱形继承、虚继承,本文就不分析了(因为我也不知道)。
来源:https://juejin.cn/post/7207724065058095141
标签:Java,多继承
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Android自定义漂亮的圆形进度条
2023-08-04 04:23:06
![](https://img.aspxhome.com/file/2023/8/138128_0s.gif)
Java连接ftp服务器实例代码
2022-04-26 23:12:37
Java截取字符串的几种方法示例
2023-11-29 12:36:32
![](https://img.aspxhome.com/file/2023/5/60585_0s.png)
Java 数据结构与算法系列精讲之队列
2023-09-26 21:10:31
![](https://img.aspxhome.com/file/2023/7/80977_0s.gif)
kotlin浅析when与循环的使用
2022-01-13 01:23:57
浅谈用java实现事件驱动机制
2022-07-12 18:06:03
实例详解Android解决按钮重复点击问题
2023-10-16 09:10:12
Android 重写ViewGroup 分析onMeasure()和onLayout()方法
2023-10-27 23:58:06
List调用toString()方法后,去除两头的中括号实例
2023-09-28 11:18:56
SpringMVC多个文件上传及上传后立即显示图片功能
2021-06-26 12:41:08
解决java.lang.Error: Unresolved compilation problems:问题
2023-02-10 05:58:08
![](https://img.aspxhome.com/file/2023/6/82456_0s.png)
android 设置圆角图片实现代码
2023-11-29 15:00:29
利用maven引入第三方jar包以及打包
2023-11-15 04:23:17
![](https://img.aspxhome.com/file/2023/0/59010_0s.jpg)
python调用java模块SmartXLS和jpype修改excel文件的方法
2023-06-11 16:59:21
Java面试题冲刺第二十二天-- Nginx
2023-11-16 13:43:48
![](https://img.aspxhome.com/file/2023/6/58916_0s.png)
C#难点逐个击破(2):out返回参数
2022-02-02 01:24:18
![](https://img.aspxhome.com/file/2023/1/119581_0s.png)
深入理解Android热修复技术原理之资源热修复技术
2021-08-12 06:13:57
![](https://img.aspxhome.com/file/2023/9/137179_0s.jpg)
Java使用JSON传递字符串注意事项解析
2021-11-05 13:35:37
![](https://img.aspxhome.com/file/2023/7/84277_0s.png)
Android Studio使用USB真机调试详解
2022-05-23 00:49:40
![](https://img.aspxhome.com/file/2023/2/94242_0s.png)
c语言轻松实现猜数字小游戏
2021-10-21 23:42:13
![](https://img.aspxhome.com/file/2023/8/127518_0s.png)