iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
0
Modern Web

征服C#系列 第 19

Day19 物件導向繼承-Override

上次我們介紹了物件導向繼承的基礎,說明Derived class(子類別)想要繼承Base class(父類別)的方法,但是如果是不想使用繼承到的行為該怎麼辦?

Override

1.Override 指的是「改寫、覆寫」,主要是用來讓繼承的 class 改寫掉從 base class 繼承到的行為。
2.使用 Override,首先必須要先在繼承的 class 中定義一個名稱與參數皆相同的method,然後在原本的 method 前加上「virtual」關鍵字,而新的 method 前加上「override」關鍵字。

https://ithelp.ithome.com.tw/upload/images/20191007/20119848bVfGvunkdS.png

https://ithelp.ithome.com.tw/upload/images/20191007/20119848lkN8XuxlXm.png

https://ithelp.ithome.com.tw/upload/images/20191007/20119848Ob1emC4kwp.png

注意:
1.使用base class變數還是可以呼叫到被override的method
2.被override的method記得加上virtual
3.Override的method名稱和參數型別都要跟被override相同

練習

有一間書店,最近在進行大清倉。除了百科全書類的書之外,只要是書類幾乎都賣 200 元 (百科全書類 500 元)。請你幫書店老闆撰寫一個計算書類價格的系統。

必須符合下列條件:

  1. 有一個叫做 Book (書) 的 class,其中包含一個 public property,和一個 public method。該 property 的名稱為 BookName (書名)。method 則為「ShowPrice (顯示價格)」,會傳回一個 string,內容是書名與價格。例如:「寫扣的藝術 200 元」。

  2. 有另一個 class 叫做 Encyclopedia (百科全書),繼承自 Book。它包含一個 method,也叫做「ShowPrice (顯示價格)」。這個 method 必須 override Book 的 ShowPrice,並且顯示的價格要是 500 元。

寫好之後可以自行建立一個 Form,加上一個按鈕,在按鈕的行為中用下面這段程式碼測試。

Book a = new Book();
Book b = new Encyclopedia();

a.BookName = "寫扣的藝術";
b.BookName = "大英百科全書";

MessageBox.Show(a.showPrice());
MessageBox.Show(b.showPrice());

執行結果為:

https://ithelp.ithome.com.tw/upload/images/20191007/20119848MhFDlkWap8.png

結語:花了一點時間理解消化,不急著趕出來而是慢慢消化在呈現,如有錯誤請跟小弟說一下我會趕快更改


上一篇
Day18 番外篇-亂數
下一篇
Day20 物件導向繼承-Override vs Method Hiding
系列文
征服C#21

尚未有邦友留言

立即登入留言