4 回答

TA贡献1871条经验 获得超13个赞
这两种方法:
被称为“区域”
取两个类型为“double”的参数
所以他们是无法区分的。您为正式参数选择的名称不会影响决策,因为(从琐碎的“因为这就是语言的工作方式”开始)这些名称在调用 area() 时不会写在源代码中。
给定问题陈述,您别无选择,只能将至少一个参数的类型更改为两个重载之一。是否允许整数大小?Float/Double让我有点紧张:这太容易犯错误了。
我知道这是在Java中重载方法的练习,所以你必须遵循问题陈述。
然而,作为一个普遍的问题:给定一个名为Area的类和一堆静态面积计算器,IMO命名每个这样的面积计算方法来说明它到底做了什么确实更容易理解。例如和.根据参数的类型进行不同的计算似乎一目了然地无法理解好名称的方式。areaOfCircle
areaOfRectangle

TA贡献1877条经验 获得超1个赞
圆的面积可以更改为半径作为双精度,pi 作为浮点数。这样,编译器将识别圆圈方法的差异。本课的想法是,只要您更改方法中的参数,就可以拥有多个同名的方法,这就是重载方法的意义所在。

TA贡献1909条经验 获得超7个赞
你可以做这样的东西:
public class Area {
// Rectangle
public static double calculateArea(int width, int length) {
return width * length;
}
// Cylinder
public static double calculateArea(double radius, int height) {
return Math.PI * Math.pow(radius, 2) * height;
}
// Circle
public static double calculateArea(double radius) {
return Math.PI * Math.pow(radius, 2);
}
}
然后使用以下命令调用它:
Area.calculateArea(2.0); // Call 'Circle' method
Area.calculateArea(2.0, 3); // Call 'Cylinder' method
Area.calculateArea(3, 5); // Call 'Rectangle' method

TA贡献1845条经验 获得超8个赞
这是一个人为的答案,它满足了3个重载“区域”方法的要求,而不必在我们可能更喜欢双精度的情况下使用浮点数或int。
首先是区域类。对于每个形状,我们需要3件事:一个(内部)类,用于保存定义形状的值;一个函数,它传递该类的对象;和(至关重要的)一个接受单个参数(内部类的对象)的 area() 方法。正是这最后一项满足了“重载方法”的要求。
class Area {
static class Circle {
double radius;
Circle(double r) { radius = r; }
}
static Circle circle(double r) {
return new Circle(r);
}
static double area(Circle c) {
return PI * c.radius * c.radius;
}
static class Rectangle {
double length, width;
Rectangle(double l, double w) { length = l; width = w; }
}
static Rectangle rectangle(double l, double w) {
return new Rectangle(l, w);
}
static double area(Rectangle r) {
return r.length * r.width;
}
static class Cylinder {
double radius, height;
Cylinder(double r, double h) { radius = r; height = h }
}
static Cylinder cylinder(douvle r, double h) {
return new Cylinder(r, h);
}
static double area(Cylinder c) {
return 2 * PI * c.radius * c.height + // side
PI * c.radius * c.radius * 2; // ends
// see note!
}
]
现在,如何使用它们?这些示例显示了如何:
a1 = Area.area(Area.circle(1));
a2 = Area.area(Area.rectangle(2,3));
a3 = Area.area(Area.cylinder(4,5));
像“圆圆(...)”这样的函数{ ... }"存在,所以我不必写“新”来创建一个圆圈,等等。
很丑吧?
注意:圆柱体“面积”的公式实际上是计算体积。3D实体的面积到底是什么意思?如果你指的是表面积,那么它是两个末端圆圈加上环绕的矩形,形成“侧面”。前者的每个区域都有区域“pi r^2”;矩形有边'2 pi r'和'h',因此面积'2 pi r h'。
添加回答
举报