C#和Unity總結Day01
1>.過載和重寫的區別:
(1).所處位置不同,過載在同類中,重寫在父子類中
(2).定義方式不同,過載方法名相同,引數列表不同,重寫方法名和引數列表相同
(3).呼叫方式不同,過載使用相同物件以不同引數呼叫,重寫用不同物件以相同引數呼叫
(4).多型時機不同,過載是編譯時多型,重寫是執行時多型
過載:方法名相同,但引數不同,引數的個數不同或者型別不同,滿足一個就可以(和返回值無關,和引數的型別和個數無關)
重寫:父類方法修改它的實現方式或者說在子類中對它進行重新編寫
那麼為何要重寫父類的方法?
通常,子類繼承父類的方法,在呼叫物件繼承方法的時候,呼叫和執行的是父類的實現,但是,有時候需要對子類中的繼承方法有不同的實現方式,重寫用到override關鍵字,且父類中要被重寫的方法必須宣告virtual或者是abstract型別
2>.面向物件的三大特點
(1).繼承:有兩種型別,實現繼承和介面繼承
實現繼承:表示一個型別派生於基型別,它擁有該基型別的所有成員欄位和函式.在實現繼承中,派生型別採用基型別的每個函式的實現程式碼,除非在派生型別的定義中指定某個函式的實現程式碼.在需要給現有的型別新增功能,或許多相關的型別共享一組重要的公共功能時.可以使用這種型別的繼承.
介面繼承:表示一個型別值繼承了函式的簽名,沒有繼承任何的程式碼,在需要制定該型別具有某些可用的特性時,最好使用這種型別的繼承.
(提高程式碼重用度,增強軟體可維護性的重要手段,符合開閉原則)
(2).封裝:被定義為"把一個或多個專案在一個物理的或者邏輯的包中".在面向物件程式設計方法論中,封裝是為防止對實現細節訪問.
訪問修飾符:
public:所有物件都可以訪問
private:物件本身在物件內部可以訪問
protected:只有該類物件及其子類物件可以訪問
internal:同一個程式集的物件可以訪問
(封裝是將資料和行為相結合,通過行為約束程式碼修改資料的程度,增強資料的安全性,屬性是C#封裝實現的最好體現)
(3).多型:多型性意味著有多重形式,在面向物件程式設計正規化中,多型性往往表現為"一個介面,多個功能"
多型性可能是靜態的或動態的
(多型性是指同名的方法在不同環境下,自適應的的反應出不同得表現,是方法動態展示的重要手段)
3>.簡述值型別和引用型別有什麼區別
(1)值型別儲存在記憶體棧中,引用型別資料儲存在記憶體堆中,而記憶體單元中存放的是堆中存放的地址
(2)值型別存取快,引用型別存取慢
(3)值型別表示實際資料,引用型別是表示儲存在記憶體堆中的資料的指標和引用
(4)棧的記憶體是自動釋放的,堆記憶體是.NET中會由GC來自動釋放
(5)值型別繼承自System.ValueType,引用型別繼承自System.Object