關於 物件導向 繼承

關於物件導向繼承

關於物件導向繼承

關於物件導向繼承

寫一個加減乘除計算器,如何寫成改其中一個計算方法
但不會影響到其它計算方法呢? 也就是將方法的耦合降到最低!

原本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
switch(operation){
case "+":
Add();
break;
case "-":
Sub();
break;
case "*":
Mul();
break;
case "/":
Div();
break;
defautl:
break;
}

以上修改其中一種運算方法都有可能異動到其它方法。

這時候需要定義一個 class Operation
每個運算方法各自繼承Operation並override getResult() 方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Add : Operation
{
private override double getResult() {
return numberA + numberB;
}
}

class Sub : Operation
{
private override double getResult() {
return numberA - numberB;
}
}

class Mul : Operation
{
private override double getResult() {
return numberA * numberB;
}
}

class Div : Operation
{
private override double getResult() {
if numberB == 0
throw new Exception("除數不能為0");
return numberA / numberB;
}
}