【中低階級】-[物件導向]-三大特性-繼承

更新於 發佈於 閱讀時間約 6 分鐘

二、繼承(inheritance)

  繼承就是假如A(子)類別去繼承B(父)類別,那麼A(子)類別可以直接去使用B(父)類別非私有的屬性和方法,但是A(子)只能繼承一個B(父)類別ㄛ!

  一樣的道理可以比喻為:爸爸跟小孩之間的關係。小孩可以去運用爸爸的資源,但是爸爸的工作屬於他自己的不能跟小孩一起分享,雖然小孩可以使用爸爸的資源,但是理論上只會有一個爸爸,不可能有其他爸爸的存在。

在繼承當中父、子類別有個稱呼要知道一下
1.父類別又稱「基底類別」(Base Class)
2.子類別又稱「衍生類別」(Derived Class)

通常我都用父類別、子類別來稱呼。子類別除了可以使用父類別的屬性和方法外,還可以擴充與修改父類別的行為哦!會用到之後會再提到override(覆寫)相關的功能,例如:virtual(虛擬)、abstract(抽象)等等相關宣告會用到的詞。

  也就是說小孩可以直接學習爸爸的能力外,還可以擴充自己的能力,甚至是將爸爸的能力學好後再優化變成現在的資訊科技化,譬如:爸爸會將客戶資料一筆一筆寫入到筆記本中,那小孩就學會這能力後又更上層樓直接建立資料庫做管理,這樣在管理上就方便多了。這樣是不是小孩的能力擴充了一項技能就是建立資料庫,並且也修改了爸爸平常用紙筆傳統式紀錄變成到電腦上做key in的動作了呢?


好啦!理論太枯燥乏味直接來看看程式好了,到底是怎麼運行的呢?

Step1建立父類別
Step2建立子類別
Step3 介面設計 與 主程式撰寫
Step4 程式執行

繼承所呈現的語法會是

class B
{
  父類別的敘述;
}
class A:B
{
  子類別A繼承父類別B的敘述;
}

來看一下實際例子

實際例子1.無使用建構函數

raw-image
raw-image
raw-image
raw-image
說明:
1.【ClassAnimal是父類別】:把共同有的「屬性欄位」與「方法動作」都在這裡做宣告
(1)第13-14行:動物共同會有的動物名字name、動物年齡age,因為未使用建構函式,因此在宣告時就做公開public大家都可以使用
(2)第15行:想交給子類別去做設計要做什麼動作又必須要有動作時可以使用abstract(抽象),看到abstract(抽象)就是子類別就一定要去做覆寫,因此使用abstract(抽象),就要將這個父類別前面多加一個abstract(抽象)的修飾詞。
(3)第17-20行:父類別做的事就是傳回字串(顯示字串)「開始說話」

2.【classDog是子類別】:因為要繼承父類別,因此在classDog後多加入「:ClassAnimal」
(1)第11行:這邊的宣告是屬於classDog的欄位,假若有另外建一個classCat的子類別,它的父類別一樣也是ClassAnimal的話,classCat就無法使用classDog類別的kind欄位
(2)第13-16行:這是要去覆寫父類別的Action()方法,classDog類別做的事就是傳回字串(顯示字串)「我正在走路」

3.【主程式】:先在介面上新增一個button和label,觸發方法為按下此button(顯示繼承文字的按鈕)後執行程式
(1)第63行:建立一個classDog類別格式的物件,命名為dog
(2)第64-66行:那麼dog可以使用它的父類別所定義的欄位(也就是name、age),也可使用它自己所定義的欄位(kind)
(3)第67-68行:利用label顯示結果,dog.Talk()、dog.name、dog.age是因為dog有繼承父類別,因此可以使用父類別的方法。dog.kind是屬於dog本身定義本來就可以使用,dog.Action()雖然有繼承父類別的方法但是因為需要覆寫,引此取得的資料會是dog類別中所做的事。

4.【執行結果】:可以跟主程式label所寫的內容相對應。


實際例子2.有使用建構函數

raw-image
raw-image
raw-image
raw-image
說明:
1.【ClassAnimal是父類別】:
(1)第30-33行:變動的地方只有欄位部分改成建構函數的參數,裡面的敘述(也就是大括號{ } )可以不用寫
(2)其他abstract抽象方法和Talk()這個方法就不用變

2.【classDog是子類別】:
(1)第28-33行:因為要接父類別的參數,所以在使用建構函數的時候語法為:
public 類別名稱(參數):base(父類別的參數)
那麼父類別的參數變數就把它一模一樣寫過來,接著再將這些參數放入到子類別的參數中去也是要寫一模一樣的參數哦!若想要在此類別增加其他參數也可以,就如同string Kind。
(2)第24-26行:由於想要將參數在此類別中使用,那就在此做宣告,便可以在第28-33行取得傳入的內容值
(3)第38行:Action顯示內容部分呢!就可以從取得的內容值賦予給此類別宣告的變數上直接做使用即可

3.【主程式】:
由於內容值都要傳到類別去使用,因此主程式只要將內容值輸入到建立物件的類別參數中後,接下來就動用方法即可,不用還要再個別輸入內容值,故主程式會簡短許多。

4.【執行結果】:可以跟主程式label所寫的內容相對應。


※可以先從父類別看到程式執行結果後,再從執行結果往回看到父類別,這樣應該就可以更懂的是怎麼樣運行的。自己也一定要操作看看ㄛ!多操作幾遍多看就會熟了。


參考資料:
1.[C#] 物件導向三大特性
2.C# 和 中的繼承 .NET
3.C# 類別的繼承


留言
avatar-img
留言分享你的想法!
avatar-img
橙果杏的沙龍
25會員
43內容數
Hello~ Welcome to my blog~❤ 這邊會分享我在程式這條道路中的學習與成長, 過程中從而了解自己的不足,再學習。 希望透過分享的方式, 也讓正在學習程式的夥伴們一起學習, 我們一起加油吧~ 「彼此都會成為彼此之間的影響力」(´,,•ω•,,)♡ ❣
橙果杏的沙龍的其他內容
2024/07/30
一、什麼是WinSocket? 也就是大家常說的WinSock全名為Windows Sockets API (WSA),它會透過TCP/IP通訊協定來做網路的通訊,會用在Windows操作系統上來開發網路應用的API(應用程式介面)   二、WinSocket用在哪裡?   Socket可以
Thumbnail
2024/07/30
一、什麼是WinSocket? 也就是大家常說的WinSock全名為Windows Sockets API (WSA),它會透過TCP/IP通訊協定來做網路的通訊,會用在Windows操作系統上來開發網路應用的API(應用程式介面)   二、WinSocket用在哪裡?   Socket可以
Thumbnail
2024/06/29
當我們架好站、WebService測試完,接著就是測試區域網路連線啦~
Thumbnail
2024/06/29
當我們架好站、WebService測試完,接著就是測試區域網路連線啦~
Thumbnail
2024/06/20
前面已經安裝好IIS後,並且也新建站台了,那麼接下來這篇就會分享如何使用它
Thumbnail
2024/06/20
前面已經安裝好IIS後,並且也新建站台了,那麼接下來這篇就會分享如何使用它
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
探討師生關係與親子關係的異同,指出大人對孩子的期望與對待方式,以及孩子在這種關係中的角色。建議大人可以用生態觀察的角度看待孩子的成長,接受並欣賞每一個孩子獨特的樣貌。
Thumbnail
探討師生關係與親子關係的異同,指出大人對孩子的期望與對待方式,以及孩子在這種關係中的角色。建議大人可以用生態觀察的角度看待孩子的成長,接受並欣賞每一個孩子獨特的樣貌。
Thumbnail
在同事的推薦下收聽了〈王麗芳的親子觀點〉podcast頻道,一聽下去還真是無法停下來,麗芳老師在教養孩子上的觀點非常明確且充滿著力量,但這力量的背後是滿滿的教育與愛,因為希望孩子能長大成獨立自主且具有思維思辨能力的人。這一點是我也非常認同、也在教養孩子路上一路在學習的目標。
Thumbnail
在同事的推薦下收聽了〈王麗芳的親子觀點〉podcast頻道,一聽下去還真是無法停下來,麗芳老師在教養孩子上的觀點非常明確且充滿著力量,但這力量的背後是滿滿的教育與愛,因為希望孩子能長大成獨立自主且具有思維思辨能力的人。這一點是我也非常認同、也在教養孩子路上一路在學習的目標。
Thumbnail
有時我實在也不確定,是孩子本來就會做這些事情,還是教育真的有用。難以梳理這個問題,只好找孩子的爸細細回想:在小孩脫離對媽媽的依附關係後,朝夕相處,真正陪在自學生身邊的爸爸,究竟有沒有在小孩身上做些什麼。 「嗯?這怎麼解釋?」 「說個例子來聽聽?」
Thumbnail
有時我實在也不確定,是孩子本來就會做這些事情,還是教育真的有用。難以梳理這個問題,只好找孩子的爸細細回想:在小孩脫離對媽媽的依附關係後,朝夕相處,真正陪在自學生身邊的爸爸,究竟有沒有在小孩身上做些什麼。 「嗯?這怎麼解釋?」 「說個例子來聽聽?」
Thumbnail
#每個孩子都是獨一無二的 每個爸媽應該都會試想過 自己的孩子長大後的模樣和性格 我和老婆也不例外 常會去聊到不曉得兒子以後會是怎麼樣 會是什麼個性 難免在教育的過程中 會去添加一些我們想要的標籤在孩子身上 希望他成為我們想要的模樣 有時候是不經意的 有時候是確實也會稍微有點刻意 我有個朋友
Thumbnail
#每個孩子都是獨一無二的 每個爸媽應該都會試想過 自己的孩子長大後的模樣和性格 我和老婆也不例外 常會去聊到不曉得兒子以後會是怎麼樣 會是什麼個性 難免在教育的過程中 會去添加一些我們想要的標籤在孩子身上 希望他成為我們想要的模樣 有時候是不經意的 有時候是確實也會稍微有點刻意 我有個朋友
Thumbnail
這是複製行為。 好的會有基礎。 壞的也一樣。 【類別】 照顧小孩。 這部分的所有相關知識都被歸賴在生物學。 對。 全台灣的父母只有1趴懂生物學。 畢竟他們連分類都不曉得。 【死】 在這種情況下,我們的父母核心目標只有一個。 小孩活著就可以了。 其他的等碰到再說。
Thumbnail
這是複製行為。 好的會有基礎。 壞的也一樣。 【類別】 照顧小孩。 這部分的所有相關知識都被歸賴在生物學。 對。 全台灣的父母只有1趴懂生物學。 畢竟他們連分類都不曉得。 【死】 在這種情況下,我們的父母核心目標只有一個。 小孩活著就可以了。 其他的等碰到再說。
Thumbnail
PAC模型 P代表Parent (父母) A代表Adult(成人) C代表Child(兒童) 這是三種說話的方式,簡單的舉例來說,#父母 的說話方式就是命令、訓斥和挑剔。「你要...」「你應該...」「你怎麼那麼...」 而#成人 的說話方式則是就事論事,客觀說明,像是「因為...,所以我認為」「
Thumbnail
PAC模型 P代表Parent (父母) A代表Adult(成人) C代表Child(兒童) 這是三種說話的方式,簡單的舉例來說,#父母 的說話方式就是命令、訓斥和挑剔。「你要...」「你應該...」「你怎麼那麼...」 而#成人 的說話方式則是就事論事,客觀說明,像是「因為...,所以我認為」「
Thumbnail
每個孩子的到來 多數都攜帶了可以療癒父母的基因 有的父母如果有足夠的智慧,便可以識別出來 通常這些所謂可以療癒父母的基因 很可能都是父母不願意包容自己的部分 所以當這些特質在孩子身上展現出來的時候 父母就會把這種自我批判投射到孩子身上 但是往往我們對待自己的孩子 會更有一種 重新經驗自己童年的感
Thumbnail
每個孩子的到來 多數都攜帶了可以療癒父母的基因 有的父母如果有足夠的智慧,便可以識別出來 通常這些所謂可以療癒父母的基因 很可能都是父母不願意包容自己的部分 所以當這些特質在孩子身上展現出來的時候 父母就會把這種自我批判投射到孩子身上 但是往往我們對待自己的孩子 會更有一種 重新經驗自己童年的感
Thumbnail
「體制外革命路線」與「體制內改革路線」|我不停掙扎拔河中! 我有一個活潑好動的小二男娃,我個人覺得好難教, 我一直在摸索育兒方式,我常常用自古以來的方式, 或我覺得該按部就班,照我要的方式來加附在兒子身上, so他很反彈,一直不停和我對抗著! 我覺得學生要有學生的本分,回家就先把學校作業完成, 老
Thumbnail
「體制外革命路線」與「體制內改革路線」|我不停掙扎拔河中! 我有一個活潑好動的小二男娃,我個人覺得好難教, 我一直在摸索育兒方式,我常常用自古以來的方式, 或我覺得該按部就班,照我要的方式來加附在兒子身上, so他很反彈,一直不停和我對抗著! 我覺得學生要有學生的本分,回家就先把學校作業完成, 老
Thumbnail
要不要生小孩? 所有考慮為人父母的未來準爸媽們,以及爸媽們 可以一起思考這個問題: 對於孩子的教養,是否有強烈決心,會負起責任? 真的有,再孕育生命吧! 教養,不只有建立在和孩子的愛與情感上 父母更有義務負起教養孩子的責任!
Thumbnail
要不要生小孩? 所有考慮為人父母的未來準爸媽們,以及爸媽們 可以一起思考這個問題: 對於孩子的教養,是否有強烈決心,會負起責任? 真的有,再孕育生命吧! 教養,不只有建立在和孩子的愛與情感上 父母更有義務負起教養孩子的責任!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News