繼承與派生:
都是針對同一種技術現象的不同角度說法(子類繼承父類,父類派生出子類)。
繼承:乙個新類從已有的類那裡獲得其已有特性,這種現象稱為類的繼承。
派生:從已有的類產生乙個新的子類(或稱為基類和派生類)。
多重繼承:乙個派生類有兩個或多個基類。派生類是基類的具體化,而基類是派生類的抽象。
注:多重繼承的構造順序: 基類→子物件→派生類
多重繼承的析構順序:派生類→子物件→基類
(類似於棧的結構)
繼承方式:公用繼承、私有繼承、受保護的繼承。
注:基類的建構函式並不會被繼承。
子物件:類物件中的內嵌已宣告物件,即物件中的物件。
類的組合:在乙個類中以另乙個類的物件作為資料成員。
注:子物件與類的組合概念一致。
虛基類:在多重繼承和多級繼承中,使用虛基類使得在繼承間接共同基類時只保留乙份成員。
如下:
注:虛基類並不是在宣告基類時宣告的,而是在宣告派生類是,指定繼承方式是宣告的。
多型性與虛函式:
多型性:向不同的物件傳送同乙個訊息,不同的物件在接收時會產生不同的行為(即乙個介面,多種方法)。
多型性可分為靜態多型性和動態多型性。
靜態多型性:通過函式過載、運算子過載實現的(編譯時)。
動態多型性:通過虛函式實現的(執行時)。
虛函式:是在基類宣告函式是virtual的,然後在派生類中才正式定義此函式。
虛函式的作用是允許在派生類中重新定義與基類同名的函式,並且可以通過基類指標或引用來訪問基類和派生類中的同名函式。
例:未使用虛函式:
#include#includeusing namespace std;
class student
;student::student(int n,string nam,float s)
void student::display()
執行結果:
加了virtual宣告虛函式:
#include#includeusing namespace std;
class student
;student::student(int n,string nam,float s)
void student::display()
執行結果如下:
純虛函式:宣告虛函式是被初始化為0的函式。
宣告的一般形式:virtual 函式型別 函式名 (引數列表)=0;
注:1、純虛函式沒有函式體;
2、最後的「=0」並不表示函式返回值為0,它只起形式上的作用,告訴編譯系統「這是純虛函式」;
3、這是乙個宣告語句,最後應有分號。
抽象類: 不用來定義物件而只作為一種基本型別用作繼承的類,稱為抽象類,由於常用作基類,又被稱為抽象基類。
純虛函式是不能被呼叫的,凡是包含純虛函式的類都是抽象類,是無法建立物件的。
友元類: 在a類的定義中宣告了friend b,則b類就是a類的友元類。友元類b中的所有函式都是a類的友元函式,可以訪問a類中的所有成員。
注:1、友元的關係是單向的而不是雙向的。如果宣告了b類是a類的友元類,不等於a類是b類的友元類,a類中的成員函式不能訪問b類中的私有資料。
2、友元的關係不能傳遞。如果b類是a類的友元類,c類是b類的友元類,不等於c類是a類的友元類。
友元函式:在類體中用friend宣告函式,該函式不僅可以是一般函式(非成員函式),也可以是另乙個類的成員函式。友元函式可以訪問這個類中的私有成員。
例: friend void display();
物件導向程式設計基本概念
定義 物件是指客觀存在的事物,由一組屬性和行為構成。物件 屬性 行為 在物件導向程式設計中,物件之間也需要聯絡,我們稱作物件的互動。定義 1 類是具有共同特徵的物件的抽象。2 類是對具有共同屬性和行為的一類事物的抽象描述。共同的屬性被描述為類的資料成員,共同行為被描述為類的成員函式。定義 例項是由類...
物件導向程式設計的基本概念
1.基本術語 1 物件和物件類 物件是 和資料的組合,可以作為乙個單位來處理。物件可以是應用程式的一部分,比如可以是控制項或窗體。整個應用程式也是乙個物件。vb中的每個物件都是用類定義的。用餅乾模子和餅乾之間的關係作比,就會明白物件和它的類之間的關係。餅乾模子是類。它確定了每塊餅乾的特徵,比如大小和...
物件導向 基本概念
物件 由其責任定義的,能夠自己負責自己,從而簡化了使用物件的控制程式的任務。將責任轉移到更區域性的層次。類 class 根據物件所具有的責任定義物件的型別。責任 行為或狀態,這些分別是由方法和或資料實現的。具體類 concrete cass 實現抽象類某一特定型別行為的類,具體類是乙個概念特定不變的...