共找到5條詞條名為繼承的結果 展開

繼承

信息學名詞

繼承,信息學名詞,是面向對象語言的重要機制。

概念


在編程中也沿用了繼承的概念,在面向對象編程中,如C++和JAVA中都有類的繼承.
C++類繼承中總共可以通過三個方式來實現,包括:公有繼承(public)、私有繼承(private)、保護繼承(protected)等。繼承可以使現有的代碼具有可重用性和可擴展性。但是,在C++的編程規範中(如google的編程規範),不建議使用私有繼承和保護繼承,而是使用組合方式。

內涵


C++編程語言的應用範圍比較廣泛,能夠以一種簡單靈活的方式幫助開發人員實現許多功能。在C++類繼承中,一個派生類可以從一個基類派生,也可以從多個基類派生。從一個基類派生的繼承稱為單繼承;從多個基類派生的繼承稱為多繼承。
例:
單繼承的定義
class B:public A{ < 派生類新定義成員> };
多繼承的定義
class C:public A,private B { < 派生類新定義成員> };
註:如果在基類前不寫訪問控制符,則默認為私有的
派生類共有三種C++類繼承方式:公有繼承(public)、私有繼承(private)、保護繼承(protected)
公有繼承(public)
基類的公有成員和保護成員可以作為其派生類的公有成員和保護成員
派生類的成員函數可以訪問基類中的公有成員和保護成員,無法訪問基類中的私有成員
派生類的對象可以訪問基類的公有成員
私有繼承(private)
基類的公有成員和保護成員都作為其派生類的私有成員
在私有繼承時,基類的成員只能由直接派生類訪問,而無法再往下繼承
保護C++類繼承(protected)
基類的所有公有成員和保護成員都成為派生類的保護成員
基類的公有成員和保護成員只能被它的直接派生類成員函數或友元訪問
構造函數和析構函數不能被繼承
因此構造派生類的對象時,需要對基類數據成員。新增數據成員和成員對象的數據成員進行初始化
派生類構造函數的參數表部分既需要包含子類某些數據成員的初始值,也要包含基類的數據成員的初始值
如果基類沒有默認的構造函數,那麼派生類必須具有給基類構造函數提供參數的構造函數
派生類構造函數一般語法如下:
派生類名(參數總表):基類名1(參數表1),...,基類名n(參數表n){ 初始化語句 } 當基類有多個構造函數時,編譯器根據派生類構造函數為基類構造函數提供的參數初始化列表中的參數類型來確定調用哪個構造函數。
派生類的析構函數應當首先對派生類新增普通成員進行清理
然後對派生類新增的對象成員進行清理
最後是對所有從C++類繼承來的成員進行清理
創建一個派生類對象時,如果基類帶有構造函數,則先調用基類的構造函數,然後調用派生類的構造函數;派生類對象被撤銷時析構函數的調用次序剛好相反
類中的公有成員繼承后在子類中仍然是公有成員。
在JAVA、C#中類的繼承與C++類似。
在面向對象方法學中,面向對象是一個十分重要的概念,其定義是:特殊類(或子類、派生類)的對象擁有其一般類(或稱父類、基類)的全部屬性與服務,稱作特殊類對一般類的繼承。其是對現實世界中遺傳現象的模擬,把數據以及操作數據的相關方法結合起來,開發中最基本的復用單元。
java語言中的繼承
繼承是面向對象語言的重要機制。藉助繼承,可以擴展原有的代碼,應用到其他程序中,而不必重新編寫這些代碼。在java語言中,繼承是通過擴展原有的類,聲明新類來實現的。擴展聲明的新類稱為子類,原有的類稱為超類(父類)。繼承機制規定,子類可以擁有超類的所有屬性和方法,也可以擴展定義自己特有的屬性,增加新方法和重新定義超類的方法。
在C#中,子類不能繼承私有類的私有成員,但可以訪問其公共成員。
軟道語錄
繼承:
在軟體開發中繼承就是子類可以使用從父類繼承的屬性和方法。
繼承是為了實現多態。
單一繼承:
單一繼承就是一個子類只能有一個父類