A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夏儒日 中级黑马   /  2012-8-1 00:01  /  1844 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个类只能继承一个类,不支持多继承是因为如果一个类继承多个类,则多个父类中方法会发生重复,则子类在调用父类重复的方法时会发生问题,java虚拟机不知道调用哪个父类的方法。
    老毕视频里说,类与接口是实现关系,并且一个类继承一个类的同时可以实现多个接口。
     我的疑问是:假设类A继承类B的同时实现接口C和D,而接口C和D里面都有抽象方法show(),不同的是接口C的show()方法的返回值是int型,接口D的show()方法返回值是boolean型,则类A实现show()方法时怎么实现,返回值类型要怎么定义?此时虚拟机不会发生问题么?

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1

查看全部评分

6 个回复

倒序浏览
如果要是按照你说的那种方式去设计,连编译都过不去,
因为A实现C和D,就相当于A类里面有C和D的方法,
但是这些方法在A类里面违反了java的方法定义规则,
方法名和参数相同的两个方法能在一个类中出现吗?
所以解决办法就是不要这样设计就行了

回复 使用道具 举报
一个类可以实现多个接口。接口之间可以多继承。但是其中全局常量不能同名,而且其中的函数不能造成继承后的编译混乱。比如两个接口,一个有void show(),一个有 int show();继承两个接口后,就会编译错误。
当然设计上不会出现同名的全局常量,也不会定义同名但返回值类型不同的方法。
回复 使用道具 举报
类A 实现类 B 方法时 要分别实现  既然 类B 中有两个抽象方法  类A就要分别实现这两个方法 所以既然是分开写的 就不会出现你所说的返回值类型的问题
回复 使用道具 举报
类A 实现类 B 方法时 要分别实现  既然 类B 中有两个抽象方法  类A就要分别实现这两个方法 所以既然是分开写的 就不会出现你所说的返回值类型的问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马