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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何拴绪 中级黑马   /  2012-6-2 10:35  /  2824 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

假如接口A和接口B中都定义了一个同名的方法,但返回值类型不同,类C实现了这接口A和接口B,c重写这两个方法怎么区分啊?

6 个回复

倒序浏览
马士兵课上提到的问题
个人认为这个问题不需要深究了
一个是现实中遇到这种问题的情况很少
写程序时也应该避免这样的问题
回复 使用道具 举报
那样定义是不行的,如果你非要实现里面的逻辑功能,那就在实现类里定义内部类提供接口供外部调用,但是那样方法签名会改变
回复 使用道具 举报
本帖最后由 黑马11期李项京 于 2012-6-2 11:27 编辑

当两个接口方法名相同时,不可能同时在类中覆盖,会报错:


interface int1{
        public int method();
        
}
interface int2{
        public String method();
}
public class Test implements int1,int2{


        public static void main(String[] args) {
               
        }

                //需要覆盖接口的方法,但是覆盖后,因为方法名相同,即系统认为是同一个方法,所以会报错
                @Override
                public int method() {
                        // TODO Auto-generated method stub
                        return 0;
                }
                public String method() {
                        // TODO Auto-generated method stub
                        return "haha";
                }
}

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这个问题貌似解决不了,改方法名吧。 或者你叫开发java的  把返回类型也变成方法重载的一种条件。这样就可以重写这两个方法了
java不支持类多继承,就是因为类的方法名一样方法主体可能不一样。支持接口的多继承,是因为接口没有方法主体。
回复 使用道具 举报
当接口中声明两个同名的方法时,另外一个类实现这个接口,运行这个类时。虚拟机会报错,因为它不知道到底是调用个方法。一定不要这样定义!!!
回复 使用道具 举报
舒远 黑马帝 2012-6-2 12:37:44
7#
你说的这种情况根本无法通过编译的。真实项目中也没有这么写代码的。属于自己给自己找麻烦哦。。{:soso_e120:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马