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