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'。
添加回答
舉報