Java:返回语句中的方法重写

时间:2017-10-29 03:39:22

标签: java

我有这个代码,它的返回语句没有被覆盖。输出20,为什么会这样?任何关于此的解释都会有所帮助。

class Rectangle {
    public int area(int length, int width){
        return length*width;
    }
}

class Square extends Rectangle{
    public int area(long length, long width){
        return (int) Math.pow(length, 2);
    }
}
public class JavaApplication36 {
    public static void main(String[] args) {
        Square r = new Square();
        System.out.println(r.area(5, 4));
    }
}

1 个答案:

答案 0 :(得分:2)

因为方形区域不会覆盖矩形区域。他们的签名是不同的。区域方法类型不同。将@override添加到Square area方法之上,您将无法再编译,但会收到错误消息,告诉您不是要覆盖该方法。