我正在学习重载方法的绳索。这是一个赋值,我必须在不完整的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));
}
}
答案 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));
}
我认为这就是你想要的。