1. 程式人生 > >淺談C++之繼承機制

淺談C++之繼承機制

       以前總是看別人的部落格,學到了很多東西,很少自己寫部落格,為了回饋大家,今天我也來開個張,那麼就從我熟悉的C++寫起吧。

       作為一門出色的面向物件程式語言,C++是博大精深的,其封裝、繼承和多型的重要特點貫穿始終,接下來談一談我對繼承的理解。既然是繼承,肯定至少存在兩個,即被繼承者繼承者,也就是C++中的基類(父類)和擴充套件類(子類)。那麼基類和擴充套件類是如何發生聯絡的呢?

       首先,需要了解一下訪問許可權,類中的每一個成員變數和成員方法都是有訪問許可權的,分為public、protectedprivate三種類型。屬於public型別的成員(包括變數和方法),既可以在該類中訪問它,也可以在其擴充套件類中訪問它,還可以在該類的外部(例如main函式)訪問它,一般使用率較高的成員會採用這種方式。屬於protected

型別的成員,既可以在該類中訪問它,也可以在其擴充套件類中訪問它,多見於基類與擴充套件類背景下。屬於private型別的成員,則只能在該類中訪問它,一般該類所獨有的成員變數都會採用private型別,避免外部類訪問,起到保護作用。

繼承是面向物件程式設計的重要特徵,繼承的機制使得一個新類可以獲得現有類的屬性和方法,這就使得在軟體的實際開發過程中程式碼的複用率得到提高,軟體開發人員可以根據需求對現有類進行修改,最大限度地重複現有的軟體。

當類的繼承方式為公有(public)繼承時,基類的publicprotected成員分別成為派生類的publicprotected成員,派生類的其他成員可以直接訪問它們,但是派生類外部只能通過派生類的物件訪問繼承來的

public物件。基類的private成員在派生類內部和外部都是不可訪問的。公有繼承在實際應用中是最常見的一種繼承方式。

當類的繼承方式為私有(private)繼承時,基類的publicprotected成員都成為派生類的private成員,派生類的其他成員可以直接訪問它們,但是派生類外部無法通過派生類的物件訪問繼承來的物件。基類的private成員在派生類內部和外部都是不可訪問的。

當類的繼承方式為保護(protected)繼承時,基類的publicprotected成員都成為派生類的protected成員,派生類的其他成員可以直接訪問它們,但是派生類外部無法通過派生類的物件訪問繼承來的物件。基類的private

成員在派生類內部和外部都是不可訪問的。

           以上是單重繼承,單重繼承機制可以描述現實世界中大多數客觀事物的關係,即只從一個基類中派生新類,但是現實世界中也存在從多個基類中派生新類的情況,稱為多重繼承。