黑马程序员技术交流社区

标题: 为什么能多继承不能多实现? [打印本页]

作者: 我要淡定。    时间: 2014-9-1 08:35
标题: 为什么能多继承不能多实现?
如果多实现时,两个方法的方法名一致,但返回值类型不一致是不是就会报错。

作者: 隔夜修书    时间: 2014-9-1 09:08
恰恰相反,java中只能单继承,不能多继承。可以实现多个接口,但是有一点要注意,实现接口的时候必须重写鞋扣中的函数,函数的方法的名字、返回值类型、参数的个数及类型必须与接口中的完全一致。
作者: 我要淡定。    时间: 2014-9-1 09:36
隔夜修书 发表于 2014-9-1 09:08
恰恰相反,java中只能单继承,不能多继承。可以实现多个接口,但是有一点要注意,实现接口的时候必须重写鞋 ...

刚才打反了,明白了,谢谢
作者: 隔夜修书    时间: 2014-9-1 09:40
我要淡定。 发表于 2014-9-1 09:36
刚才打反了,明白了,谢谢

加油:handshake
作者: bullfrog    时间: 2014-9-1 09:54
确实会报错,如果你的类不是abstract的,则编译时报错,会提示你没有覆盖抽象方法,自己试着写一下就知道了。

当用抽象类来实现接口时,不是一定要重写接口中的抽象方法的,但是能够实际创建对象,即有构建函数的类必须覆写抽象方法。

只有当函数的修饰符,返回值声明,函数名,参数类型及其顺序完全一样时,两个函数才被认为是“一致”的。否则就是函数重载——两个是函数名一致,但是不一样的函数,各是各。

在多实现时,如果被实现的两个接口各有一个同名的抽象方法,并且这两个方法如果“完全一致”, 那么实现这两个接口的类只需要覆写一个抽象方法,因为是同一个。
而如果这两个抽象方法返回值声明不一致,那么必须两个都要覆写,因为这两个抽象方法是不一样的。
作者: 张涛的狂怒    时间: 2014-9-1 10:00
学习学习
作者: 她只是过客    时间: 2014-9-1 10:04
我是来学习的{:2_31:}
作者: ☆枫の云    时间: 2014-9-1 10:32
如果能多继承,加入两个父类有相同的方法,你调用会调哪一个呢?这明显不合理
作者: Sakuratossi    时间: 2014-9-1 11:33
说反了吧,只能单继承,能多实现吧,楼上的解释很好啊
作者: 我要淡定。    时间: 2014-9-3 13:24
bullfrog 发表于 2014-9-1 09:54
确实会报错,如果你的类不是abstract的,则编译时报错,会提示你没有覆盖抽象方法,自己试着写一下就知道了 ...

实现的两个接口不能有同名但是返回值不一样的函数吧?
作者: 沙拉很好吃    时间: 2014-9-3 17:10
java 单继承 多实现
作者: 648947721    时间: 2014-9-4 00:23
肯定会报错。要是能多继承会存在不安全因素。
作者: 张周飞    时间: 2014-9-4 09:34
本帖最后由 张周飞 于 2014-9-4 09:36 编辑

确实是继承只能单继承,接口可以实现多个接口
通过内部类  可以实现 “多继承”
比如:自己的外部类继承了A类,在A类定义一个内部【可以用的外部类的所有东西】>>>继承B类
但是有一个小缺陷:虽然【间接的实现了多继承】,但是破坏了类的整体设计[ 类组成:属性和方法[多个内部类],相当于打破了类的设计,加深了复杂性!!!
{:3_57:}..............................默默无闻的我 ,出现下 混个熟脸

作者: zht123zht    时间: 2014-9-4 13:14
学习学习默默路过
作者: wfaly    时间: 2014-9-4 16:09
学习了...




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