如何设置重载方法来查找圆周?

时间:2014-12-13 08:23:28

标签: java overloading

我正在学习重载方法的绳索。这是一个赋值,我必须在不完整的CircleStats类中编写重载方法,但我不知道如何设置它们。我应该使用它的直径/半径找到圆的圆周。

我知道我必须使用直径来创建圆周的函数,然后使用半径,但不知道从那里去哪里。我也知道半径将是double,半径将是int,但我完全被如何填写//代码转到这里。

如果有人可以解释如何在每种重载方法中设置数学以计算周长,那也很棒。谢谢!

编辑:在第21行和第22行中,它应为cStats.calcCircleCircumf而不是cStats.calcCircleArea

/* The calcCircleCircumf( ) method in the CircleStatsTester class is overloaded. Write the overloaded methods in the incomplete CircleStats class.*/

class CircleStats
{
    CircleStats()
    {
    }     
    //…code goes here     
}

public class CircleStatsTester
{
    public static void main(String[] args)
    {
        int diameter = 5;
        double radius = 2.5;
        CircleStats cStats = new CircleStats();

        System.out.println("The area = " + cStats.calcCircleArea(diameter));
        System.out.println("The area = " + cStats.calcCircleArea(radius));    
    }
}

3 个答案:

答案 0 :(得分:0)

方法重载意味着你有相同的方法名称,但方法签名不同。

方法签名包括

  • 方法名称
  • 方法参数类型
  • 方法参数序列

要重载方法,只需使用不同 签名创建相同方法名称的另一种方法。

示例:

public int getArea(int x)
{

}

public double getArea(double x) //Signature is different, method overloading occurs
{

}

public int getArea(int x, int y) //Signature is different, method overloading occurs
{

}

请注意,return type 不会影响方法签名。


如果要实现方法重载,但提供不同的方法名称,则不正确。

答案 1 :(得分:0)

这基本上是不可能的。

重载方法包括使两个方法具有相同的名称,但具有不同的签名(即具有不同数量的参数和/或不同类型的参数)。

由于半径和直径具有相同的类型,Java无法区分

calcCircleCircumf(double radius)

calcCircleCircumf(double diameter)

所以你需要两个名称不同的方法:

computeCircumferenceFromRadius(double radius)
computeCircumferenceFromDiameter(double diameter)

这不再是超载了。

关于命名的注意事项:这些方法是名为CircleStats的类的一部分。因此方法名称中的puttin“Circle”是多余的,只会增加噪音。使用完整的单词会使代码更具可读性,这就是Java中的惯例。因此computeCircumferenceFromRadius而非calcCircleCircumf

答案 2 :(得分:0)

即使这对我来说很奇怪,但我认为这就是你所要求的。

public int calcCircleCircumf(int radius)   
{
    return (int)(2 * Math.PI * radius);
}

public double calcCircleCircumf(double diameter) //method overloading
{
    return (2 * Math.PI * (diameter/2));
}

我认为这就是你想要的。