子接口会继承所有父接口的方法
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() {}//你这个方法写到类外面去了
你的类Hen中定义的getMoney方法有歧义。类方法的重载不是以返回值区分的,是以方法的参数数量和类型区分的,你应该保持Hen中的getMoney与接口A中getMoney方法的声明一致。
同一个类不可以有两个同名方法即使它们的返回值不同,double getMoney()和void getMoney()不可以共存。删掉返回double的getMoney()方法即可。