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接口会编译报错,报错信息为:
翻不翻译都无所谓了,反正就是报错了,表示C接口不能同时继承两个接口中default方法test()。
如果你问,那为什么C 中可以支持多继承,那得解释菱形继承、虚继承,本文就不分析了(因为我也不知道)。
你听说过公众号:Hoeller吗?
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanfejii
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24