1. 程式人生 > >C#中的繼承封裝和多型知識點總結

C#中的繼承封裝和多型知識點總結

最重要的特性之一。任何類都可以從另外一個類繼承,即這個類擁有它所繼承類的所有成員。在OOP中,被繼承的類稱為父類或基類。C#提供了類的繼承機制,但C#只支援單繼承,不支援多重繼承,即在C#中一次只允許繼承一個類,不能同時繼承多個類。利用繼承機制,使用者可以通過增加、修改或替換類中方法對這個類進行擴充,以適應不同的應用要求。利用繼承,程式開發人員可以在已有類的基礎上構造新類。繼承使得類支援分類的概念。在日常生活中很多東西比較有條理,那是因為它們有著很好的層次分類。如果不用層次分類,則要對每個物件定義其所有的性質。使用繼承後,每個物件就可以只定義自己的特殊性質。每一層的物件只需定義本身的性質,其他性質可以從上一層繼承下來。在C#
中,介面允許多繼承,可以通過繼承多個介面來實現類似於C++中的多重繼承。在繼承一個基類時,成員的可訪問性是一個重要的問題。子類不能訪問基類的私有成員,但是可以訪問其公共成員。子類和外部程式碼都可以訪問公共成員。這就是說,只使用這兩個可訪問性,就可以讓一個成員被基類和子類訪問,同時也可以被外部的程式碼訪問。為了解決這個問題,C# 還提供了第3種可訪問性:protected。只有派生類才能訪問protected成員,基類和外部程式碼都不能訪問protected成員。除了成員的保護級別外,使用者還可以為成員定義其繼承行為。基類的成員可以是虛擬的,成員可以由繼承它的類重寫。子類可以提供成員的其他執行程式碼。這種執行程式碼不會刪除原來的程式碼,仍可以在類中訪問原來的程式碼,但外部程式碼不能訪問它們。如果沒有提供其他執行方式,外部程式碼就訪問基類中成員的執行程式碼。
虛擬成員不能是私有成員,因為成員不能同時由子類重寫,也不能訪問它。基類還可以定義為抽象類。抽象類不能直接例項化,要使用抽象類就必須繼承這個類,然後再例項化。