黑马程序员技术交流社区

标题: 【已解决】突然发现Java单继承的说法是不有点不周全? [打印本页]

作者: 何拴绪    时间: 2012-6-4 11:21
标题: 【已解决】突然发现Java单继承的说法是不有点不周全?
本帖最后由 何拴绪 于 2012-6-4 17:53 编辑

Java中的类只能单继承,但是所有的类都是从Objeect继承而来,那么是不是也是可以说是多继承呢?至少说是可以继承两个类呢?
作者: 梁小波    时间: 2012-6-4 11:24
{:soso_e136:}单继承是只有一个父类!但他的祖先类含有很多!也就是说我们都只有一个爸爸,而我们的爸爸也只有一个爸爸;object是我们爷爷的爸爸。。。;
所以和单继承不冲突;有点想歪了;
作者: 唐辉辉    时间: 2012-6-4 11:29
只能继承一个父类,但可以多层继承。
作者: 赵玮_Tom    时间: 2012-6-4 11:43
多层继承”和“多重继承”是不一样的。
楼主所言就是“多层”继承,子类继承父类,而父类还可以作为其他类的子类,其实可以把这种关系想为一条“继承链”,但针对某个具体的类而言,肯定只有一个“直接父类”;
“多重”继承就是指一个类有多于一个的父类,俗称“有两个亲生父亲”。
Java允许出现“多层”继承,而不允许出现“多重”继承;
再多说一点:对于Java中类和接口的实现继承关系,总结一下:
1,类可以继承类(extends,单继承);
2,类可以实现接口(implements,可以实现多个接口,根本原因就是接口中方法都是抽象的;而不能继承多个类的原因就是类中的方法不一定全是抽象的,如果多个父类存在同名方法,子类不知道到底覆写的是哪个方法;)
3,接口可以继承接口(extends,可以继承多个接口。注:这里讲的继承,更确切的说是一种“扩展”,因为接口中都是全局常量和抽象方法。由于没有实际意义(完全可以把被继承的多个接口合并为一个接口),极为少用。
作者: 胡团乐    时间: 2012-6-4 11:47
本帖最后由 胡团乐 于 2012-6-4 11:55 编辑

Java中的类只能单继承,但是所有的类都是从Objeect继承而来,那么是不是也是可以说是多继承呢?至少说是可以继承两个类呢?
不能说 继承两个类, 可以说是多层继承,就像 B 继承A ,C 继承 B;
java用implements多实现,相当于c++的多继承
作者: 杨永峰    时间: 2012-6-4 11:49
这是多层继承。java中通过接口实现同时继承多个类,一个类可以继承一个类的同时实现多个接口。实现接口的本质还是继承,只不过条件苛刻一些。
作者: 金鑫    时间: 2012-6-4 11:50
子类 extends 父类

所有类的父类:Object,所有类都自动继承Object类

java属于单继承,要实现多继承只能使用接口;
作者: 包晗    时间: 2012-6-4 11:54
类都可以继承  2继承1,3继承2,4继承3  这样推理 可以无限扩大,外加有接口辅助   
作者: 郭永岳    时间: 2012-6-4 17:37
本帖最后由 郭永岳 于 2012-6-4 17:39 编辑

Object并没有说明是任何类的直接父类。
例如:
1、如果你写个类A,没有extends任何类,隐含就是继承Object。
2、如果你A类继承自B,A就不extends Object了,但是你的B是extends Object的。
3、java中利用接口(interface )变相的来代替多继承,可以多继承接口。
所以,A也继承自Object,是一个间接父类。其中,




作者: 何拴绪    时间: 2012-6-4 17:52
谢谢各位回答,一时懵了多层继承和多继承搞错了。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2