java中可以使用两个同名同参数的方法吗

问题描述 投票:0回答:2

//利用方法重载的概念 公开课练习10 {

    // Method to calculate the area of a rectangle
    public static double calculateArea(double length, double width) {
        return length * width;
    }

    // Method to calculate the area of a square
    public static double calculateArea(double side) {
        return side * side;
    }

    // Method to calculate the area of a circle
    public static double calculateArea(double radius) {
        return Math.PI * radius * radius;
    }

    public static void main(String[] args) {

        // Calculate and display the area of a rectangle
        System.out.println("Area of rectangle (length=5, width=4): " + calculateArea(5.0, 4.0));

        // Calculate and display the area of a square
        System.out.println("Area of square (side=4): " + calculateArea(4.0));

        // Calculate and display the area of a circle
        System.out.println("Area of circle (radius=3): " + calculateArea(3.0));
    }

}

我从chatGPT获取了这段代码,它没有显示任何错误,但是当我编译这个程序时,发生了错误。

java overloading
2个回答
0
投票

你所做的不是重载,并且不会编译。

有两种简单的方法可以纠正此问题:

// Method to calculate the area of a square
    public static double calculateArea(double side) {
        return side * side;
    }

    // Method to calculate the area of a circle
    public static double calculateArea(double radius) {
        return Math.PI * radius * radius;
    }

选项 1:给它们起独特的名字

// Method to calculate the area of a square
    public static double calculateAreaOfSquare(double side) {
        return side * side;
    }

    // Method to calculate the area of a circle
    public static double calculateAreaOfCircle(double radius) {
        return Math.PI * radius * radius;
    }

或添加一个参数,定义您要查找的类型:

public enum Shape {
  CIRCLE,
  SQUARE;
} 

// Method to calculate the area of a shape
public static double calculateArea(double side, Shape shape) {
    if ( shape == Shape.SQUARE )
        return side * side;
    else if ( shape == Shape.CIRCLE )
        return Math.PI * radius * radius;
    throw new RuntimeException("Shape: " + shape.name() + " not supported");
}

0
投票

要解决此问题,只需重命名每个calculateArea方法以反映其计算的形状,例如calculateRectangleArea、calculateSquareArea和calculateCircleArea,因为Java对所有这些方法都采用单个双精度作为参数感到困惑。发生错误的原因是 Java 无法仅通过参数名称或返回类型来区分方法。

最好的办法是更改方法名称,如下所示:

public static double calculateRectangleArea(double length, double width) {
    return length * width;
}

public static double calculateSquareArea(double side) {
    return side * side;
}

public static double calculateCircleArea(double radius) {
    return Math.PI * radius * radius;
}
© www.soinside.com 2019 - 2024. All rights reserved.