黑马程序员技术交流社区

标题: 关于单继承 和多继承 [打印本页]

作者: 丶遇见另一个自    时间: 2013-8-24 23:02
标题: 关于单继承 和多继承
本帖最后由 forward 于 2013-8-25 10:37 编辑

单继承:一个类只能有一个父类 叫做单继承
多继承:一个类可以有多个父类 叫做多继承
class a{
}
class b{
}
class c{
}
class c extends a {
}  //这个继承叫做单继承
class c extends a,b {
} //这个叫做多继承
小知识。。。。。。。。。。。。。。。。

作者: 黄兴旺    时间: 2013-8-24 23:09
你这是要闹哪样...
作者: gulup    时间: 2013-8-24 23:11
不知道楼主是分享?还是怎么的?Java并不支持多重继承,只支持单继承。像你:
class c extends a,b {
} //这个叫做多继承
这样的写法是错误的。Java没有多重继承,但是有多层继承,
class A{}
class B extends A{}
class C extends B{}
C类继承自B类,B类继承自A类。
虽然Java不支持多继承,但有另外一种变相的多继承,就是接口的多实现。
一个类可以实现多个接口。以拟补不支持多继承的缺陷。

作者: 梦想蓝色天空    时间: 2013-8-25 08:43
看到标题我蒙了,java除了实现接口还能多继承,看看肿么回事,楼上说的很清楚,也很正确,顶一个
作者: 行如止水    时间: 2013-8-25 09:48
这个没有这么说的吧,C++中多继承不用extends关键字,而JAVA中不存在多继承!
所以这个命题完全是错误的!求技术分!
作者: 清心玉质    时间: 2013-8-25 09:53
我看完也怔了一下,不是单继承多实现嘛
作者: 王广亚    时间: 2013-8-25 09:56
我也同样大吃一惊。楼主在java中只有单继承没有多继承。可以多实现,可以多层继承,可以在继承一个类的同时再实现一个或多个接口。
作者: 冯安宇    时间: 2013-8-25 09:56
不是只有接口才能“多继承”
作者: 张云飞    时间: 2013-8-25 10:15
本帖最后由 张云飞 于 2013-8-25 10:37 编辑

目前的各大java版本不支持多继承的。即以下是错误的:class a{...}
class b{...}
class c extends a,b {...}
为解决此类设计要求,便有了接口。利用接口的多实现可以解决此类设计。即如下设计:

interface a{...}
interface b{....}
class c implements a,b{...}
至于继承与接口的区别这也是java基础的一大要点,顺便看看java抽象类和借口的区别:
注:接口是特殊的抽象类,而以下所说的“抽象类”默认指abstract修饰的类。
1、抽象类中可以有非抽象方法,接口中全是抽象方法。
2、接口中不能有私有方法和变量,抽象类中可以。
3、实现接口的类必须实现接口中的所有方法,实现抽象类的类可以有选择的实现抽象类中的类。
4、实现接口可以“多实现”,而继承抽象类只能继承一个抽象类。
5、接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用。

作者: 黑马-文鸿利    时间: 2013-8-25 10:22
本帖最后由 forward 于 2013-8-25 10:36 编辑

A(子类) extends (继承) B(父类) 单继承
父类可以被多个类继承子类可以被其他类继承
子类不能继承多个父类 用接口(implements)
作者: 丶遇见另一个自    时间: 2013-8-25 20:53
gulup 发表于 2013-8-24 23:11
不知道楼主是分享?还是怎么的?Java并不支持多重继承,只支持单继承。像你:
class c extends a,b {
} // ...

自己写的  哈哈 本人菜鸟 其实真心没有多继承 接口是多实现,包涵下哈
作者: 丶遇见另一个自    时间: 2013-8-25 20:54
张云飞 发表于 2013-8-25 10:15
目前的各大java版本不支持多继承的。即以下是错误的:class a{...}
class b{...}
class c extends a,b {... ...

自己写的  哈哈 本人菜鸟 其实真心没有多继承 包涵下哈




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