java的interface问题,为什么编译总会报错,求解!
答案:3 悬赏:60 手机版
解决时间 2021-04-02 12:14
- 提问者网友:战皆罪
- 2021-04-01 20:19
java的interface问题,为什么编译总会报错,求解!
最佳答案
- 五星知识达人网友:青灯有味
- 2021-04-01 21:36
子接口会继承所有父接口的方法
interface A继承自Protectable 而Protectable 又继承自Valuable
这样A中就有了所有父接口的方法 其中也包括double getMoney(),但是你在A中又声明了void getMoney() 返回类型不一样的同名同参方法 起了冲突 也会报错
非抽象类实现接口必须实现接口中所有方法
class Hen实现了A 所以A必须覆盖getMoney(), beProtected(),m()
而且楼主
class Hen implements A {
public void m() {}
public void beProtected() {}
public double getMoney() {
return 1.0;
}
public void getMoney() {}//你这个方法写到类外面去了
interface A继承自Protectable 而Protectable 又继承自Valuable
这样A中就有了所有父接口的方法 其中也包括double getMoney(),但是你在A中又声明了void getMoney() 返回类型不一样的同名同参方法 起了冲突 也会报错
非抽象类实现接口必须实现接口中所有方法
class Hen实现了A 所以A必须覆盖getMoney(), beProtected(),m()
而且楼主
class Hen implements A {
public void m() {}
public void beProtected() {}
public double getMoney() {
return 1.0;
}
public void getMoney() {}//你这个方法写到类外面去了
全部回答
- 1楼网友:春色三分
- 2021-04-01 23:01
同一个类不可以有两个同名方法即使它们的返回值不同,double getMoney()和void getMoney()不可以共存。删掉返回double的getMoney()方法即可。追问删掉也试了 也会报41行的错误 44行的错误我已经知道了追答我复制下来测试过,删掉double的getMoney方法后可以通过编译。你的源代码是不是和上面写的不一致?
- 2楼网友:天凉才是好个秋
- 2021-04-01 22:06
你的类Hen中定义的getMoney方法有歧义。类方法的重载不是以返回值区分的,是以方法的参数数量和类型区分的,你应该保持Hen中的getMoney与接口A中getMoney方法的声明一致。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯