---
# System prepended metadata

title: 物件導向-封裝、繼承 (C#)
tags: [C#, Back-end]

---

# 物件導向-封裝、繼承 (C#)
讀完《深入淺出C#》中談論到封裝、繼承的概念，故寫此筆記記錄下心得。

封裝，即當你撰寫一個類別時，其中包含了欄位及方法等，依據你的設計想法，有些欄位或方法可能只想讓此類別在內部使用就好，故可將之設為private，以防止外部使用此類別時不會存取及修改這些資料。
物件導向設計概念包含了：程式碼可重複被使用，當你寫的一段程式碼，後續有人想要使用它時，好的封裝能減少內部一些計算邏輯被外部其他人誤用或竄改而產生的bug，也能讓後續的人閱讀此段程式碼時可以清楚知道哪些是僅做內部使用，增加安全性及可讀性。

繼承，當你想要使用一些普遍性的類別並繼續撰寫更多功能，即可繼承該類別，例如一常見的例子，有一個==動物==類別，接著有一個==狗==類別繼承==動物==類別，便可使用關於==動物==的所有欄位或方法，並繼續撰寫屬於==狗==的內容，讓程式碼能被重複使用。
覆寫：在父類別的方法加上virtual關鍵字，並在子類別的該相同名稱的方法加上override，即可改寫該方法。
(在網路上瀏覽過一些文章，有人提到：多用合成，少用繼承。以及，不要繼承太“深”，因為太多層反而降低程式的“可維護性”。)

# 參考
1. Andrew Stellman & Jennifer Greene。《深入淺出C#》。楊仁和譯

###### tags: `Back-end` `C#`