//6月1日 使用父類別的變數
class Land { // 父類別
String ID_Number;
Land(){ // 建構方法
}
Land(String ID_Number){ // 建構方法
this.ID_Number=ID_Number;
}
double area() { // 計算面積
return 0;
}
}
class Circle extends Land { // 圓形的土地
int r; // 半徑(單位:公尺)
Circle(int r) { // 建構方法
this.r = r;
}
Circle(int r,String ID_Number) { // 建構方法
super(ID_Number); //●重要 要再第一個敘述
this.r = r;
}
double area() { // 多重定義的版本
return 3.14 * r * r;
}
}
class Square extends Land { // 正方形的土地
int side; // 邊長(單位:公尺)
Square(int side) { // 建構方法
this.side = side;
}
Square(int side,String ID_Number) { // 建構方法
super(ID_Number); //●重要 要再第一個敘述
this.side = side;
}
double area() { // 多重定義的版本
return side * side;
}
}
class Calculator {
double price; // 每平方公尺的價格(元)
Calculator(double price) { // 建構方法
this.price = price;
}
double calculatePrice(Land l) {
return l.area() * price; // 透過多形呼叫正確的 area() 方法
}
double calculateAllPrices(Land… Lands) {
double total = 0; // 加總變數
for(Land l : Lands) { // 一一取出各個物件
total += calculatePrice(l); // 個別計算並累加
}
return total;
}
}
public class Lands3 {
public static void main(String[] argv) {
Circle c = new Circle(5,"Circle_001"); // 一塊圓形的地
Square s = new Square(5,"Square_001"); // 一塊正方形的地
Calculator ca = new Calculator(3000.0); // 每平方公尺3000元
System.out.println(
"土地編號:" +
c.ID_Number+" & " + s.ID_Number +
" 總價值:" +
ca.calculateAllPrices(c,s)
);// 使用匿名陣列
}
}
//執行結果
——————–Configuration: <Default>——————–
土地編號:Circle_001 & Square_001 總價值:310500.0
Process completed.