封裝 (encapsulation)
封裝就是將抽象得到的數據和行為(或功能)相結合,形成一個有機的整體,也就是將數據與操作數據的源代碼進行有機的結合,形成“類”,其中數據和函數都是類的成員。
封裝的目的是增強安全性和簡化編程,使用者不必了解具體的實現細節,而只是要通過 外部接口,一特定的訪問權限來使用類的成員。
例如,在抽象的基礎上,我們可以將時鐘的數據和功能封裝起來,構成一個時鐘類。
按c++的語法,時鐘類的聲明如下:
class
Clock
{
public
:
//共有成員,外部借口
void
SetTime
(
int
NewH
,
int
NewM
,
int
NewS
)
;
void
ShowTime
()
;
private
:
//私有成員,外部無法訪問
int
Hour
,
Minute
,
Second
;
}
可以看到通過封裝使一部分成員充當類與外部的接口,而將其他的成員隱蔽起來,這樣就達到了對成員訪問權限的合理控制,使不同類之間的相互影響減少到最低限度,進而增強數據的安全性和簡化程序的編寫工作。
什么是多態(Polymorphisn)?按字面的意思就是“多種形狀”。引用Charlie Calverts對多態的描述——多態性是允許你將父對象設置成為和一個或更多的他的子對象相等的技術,賦值之后,父對象就可以根據當前賦值給它的子對象的特性以不同的方式運作(摘自“Delphi4 編程技術內幕”)。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。多態性在Object Pascal和C++中都是通過虛函數(Virtual Function)實現的。
好,接著是“虛函數”(或者是“虛方法”)。虛函數就是允許被其子類重新定義的成員函數。而子類重新定義父類虛函數的做法,稱為“覆蓋”(override),或者稱為“重寫”。
“繼承”是面向對象軟件技術當中的一個概念。如果一個類A繼承自另一個類B,就把這個A稱為“B的子類”,而把B稱為“A的父類”。繼承可以使得子類具有父類的各種屬性和方法,而不需要再次編寫相同的代碼。在令子類繼承父類的同時,可以重新定義某些屬性,并重寫某些方法,即覆蓋父類的原有屬性和方法,使其獲得與父類不同的功能。
繼承是指一個對象直接使用另一對象的屬性和方法。事實上,我們遇到的很多實體都有繼承的含義。例如,若把汽車看成一個實體,它可以分成多個子實體,如:卡車、公共汽車等。這些子實體都具有汽車的特性,因此,汽車是它們的“父親”,而這些子實體則是汽車的“孩子”。