interface Playable {
void play();
}
interface Bounceable {
int play();
}
interface Rollable extends Playable, Bounceable {
}
会提示 The return type is incompatible with Playable.play(), Bounceable.play()
为啥把Bounceable 里面改成void play(); 就能编译过去了呢,我觉得也有冲突的啊,如果另外一个类继承了接口Rollable 并且要实现play()函数,它怎么知道该实现哪个函数呢
void play();
}
interface Bounceable {
int play();
}
interface Rollable extends Playable, Bounceable {
}
会提示 The return type is incompatible with Playable.play(), Bounceable.play()
为啥把Bounceable 里面改成void play(); 就能编译过去了呢,我觉得也有冲突的啊,如果另外一个类继承了接口Rollable 并且要实现play()函数,它怎么知道该实现哪个函数呢
解决方案 »
- 关于JSplitPane的两个问题
- 求教,关于hibernate中Transaction的commit问题
- 怎样在图片上画线?JAVA
- 想请问下,下面的代码有什么问题吗?为什么画不出图像??谢谢各位了!
- 请问编程时,什么时候该用到静态方法(看起来好像调用挺方便,好像速度也快),什么时候用 非静态方法 (((很迷茫)))
- 麻烦打架帮我看一下,究竟是哪里出了问题!!谢谢!!
- ◎◎◎【赐教】static vs. override◎◎◎
- 关于托动 JInternalFrame 没有虚线标记框的问题,急,在线等
- 帮我看看下面的线程程序有哪些问题?
- 子类与超类中方法的置换问题
- 问个unittest的问题,大家都来看看
- 项目里用Hibernate和jdbc都要去连数据库会有问题吗
Rollable接口同时继承了Playable, Bounceable两个接口。实现了Rollable的类必须同时实现Playable, Bounceable定义的方法。然而你定义了一个play()在两个接口中,要想区分名称相同的方法必须通过参数类型或者参数个数和位置,返回值不能决定不同的方法,像你说的一样“我觉得也有冲突的啊”,系统也觉得有冲突。这个要这么干,那个要那么干。系统郁闷了,改听谁的呢?
所以必须通过参数类型或者参数个数或位置区分不同的方法。返回值是不行的。http://topic.csdn.net/u/20081130/15/2ee11370-774f-4e7f-9700-d22116b2e2dd.html
通俗来说就是你有2个手下A和B 你叫他们去拿个东西过来
没有指定是那个 那他们两个就不知道怎么做了
(是A做还是B做 还是其他~ 你都觉得有冲突了编译器它又没思维更不知道做什么了)
public int play();
public void play();
}就是会报错的,
你把其中一个改为void的时侯系统只认为它继承了一个方法
public interface Class1 {
public int play();
public void play();
}
这样的话是两个同样的方法,因为系统不认反回值的