java的interface问题,为什么编译总会报错,求解!

2025-05-15 07:00:02
推荐回答(3个)
回答(1):

子接口会继承所有父接口的方法

    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() {}//你这个方法写到类外面去了

回答(2):

你的类Hen中定义的getMoney方法有歧义。类方法的重载不是以返回值区分的,是以方法的参数数量和类型区分的,你应该保持Hen中的getMoney与接口A中getMoney方法的声明一致。

回答(3):

同一个类不可以有两个同名方法即使它们的返回值不同,double getMoney()和void getMoney()不可以共存。删掉返回double的getMoney()方法即可。