C 的封裝性 繼承性和多型性概念

2021-06-18 18:37:15 字數 1007 閱讀 7345

封裝 (encapsulation)

封裝就是將抽象得到的資料和行為(或功能)相結合,形成乙個有機的整體,也就是將資料與運算元據的源**進行有機的結合,形成「類」,其中資料和函式都是類的成員。

封裝的目的是增強安全性和簡化程式設計,使用者不必了解具體的實現細節,而只是要通過 外部介面,一特定的訪問許可權來使用類的成員。

例如,在抽象的基礎上,我們可以將時鐘的資料和功能封裝起來,構成乙個時鐘類。

按c++的語法,時鐘類的宣告如下:

class

clock

可以看到通過封裝使一部分成員充當類與外部的介面,而將其他的成員隱蔽起來,這樣就達到了對成員訪問許可權的合理控制,使不同類之間的相互影響減少到最低限度,進而增強資料的安全性和簡化程式的編寫工作。

什麼是多型(polymorphisn)?按字面的意思就是「多種形狀」。引用charlie calverts對多型的描述——多型性是允許你將父物件設定成為和乙個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作(摘自「delphi4 程式設計技術內幕」)。簡單的說,就是一句話:允許將子類型別的指標賦值給父類型別的指標。多型性在object pascal和c++中都是通過虛函式(virtual function)實現的。

好,接著是「虛函式」(或者是「虛方法」)。虛函式就是允許被其子類重新定義的成員函式。而子類重新定義父類虛函式的做法,稱為「覆蓋」(override),或者稱為「重寫」。

「繼承」是物件導向軟體技術當中的乙個概念。如果乙個類a繼承自另乙個類b,就把這個a稱為「b的子類」,而把b稱為「a的父類」。繼承可以使得子類具有父類的各種屬性和方法,而不需要再次編寫相同的**。在令子類繼承父類的同時,可以重新定義某些屬性,並重寫某些方法,即覆蓋父類的原有屬性和方法,使其獲得與父類不同的功能。

繼承是指乙個物件直接使用另一物件的屬性和方法。事實上,我們遇到的很多實體都有繼承的含義。例如,若把汽車看成乙個實體,它可以分成多個子實體,如:卡車、公共汽車等。這些子實體都具有汽車的特性,因此,汽車是它們的「父親」,而這些子實體則是汽車的「孩子」。

C 多型性和繼承性

這篇文章是6年前的,從自己的qq 632846506 日誌中移過來的。前段時間有人突然問我c 多型性的理論知識,一下子把我問蒙了,用c 近十年,讓我一下子回答多型性的理論。我答不上來,只是簡單的回答了下 多型性主要用在函式介面上,主要是虛函式和純虛函式 的使用,基類中的函式可以在不同子類中有不同的實...

C 類和物件特性(繼承性,封裝性,多型性)

基類 派生類定義及其基本定義 當建立乙個新的類時,可以指定它繼承已有的類的成員。這兩個類分別被稱為基類,派生類。繼承,就是將基類中public和protected中的成員,全部或分別,繼承到派生類中的private protected public中,單個或多個部分中 派生類可以從乙個或多個基類繼承...

物件導向 封裝性 繼承性 多型性總結

二 繼承性 三 多型性 封裝性就是將物件內部的複雜性隱藏起來,只是對外部公開簡單的介面,便於外界呼叫,從而提高系統的可擴充套件性 可維護性。通俗的說,就是把該隱藏的隱藏起來,該暴露的暴露出來。將類的屬性設為私有的 private 並提供set或者get方法。此時,針對屬性就體現了封裝性。不對外暴露的...