物件導向程式設計(2)可見性 封裝 繼承 友元

2021-10-03 06:37:38 字數 1995 閱讀 9670

目錄

1,可見性

2,物件導向三大特性

3,繼承

4,派生類的建構函式和析構函式

5,友元函式和友元類

可見性關鍵字用來修飾成員(成員變數和成員函式)的可見性,預設是private

public是公開的,所有地方都可以訪問,private是私有的,只有自己可以訪問。

派生類會繼承基類的public成員,但不繼承private成員。

基類的成員如果用protected修飾,那麼派生類就可以繼承,別的地方不能訪問。

示例:

#includeusing namespace std;

class b

friend void display2();

protected:

int j;

private:

int k;

};class a :public b

};void display2()

int main()

輸出結果:12

1123

封裝,繼承,多型

抽象就是將類的實現和使用分離開來。

封裝就是類的使用不需要了解實現的細節。

三種繼承方式:

基類成員許可權

public繼承

private繼承

protected繼承

public

public

private

protected

private//

/protected

protected

private

protected

public繼承:子類可以訪問父類的public成員和protected成員,繼承後的屬性不變

private繼承:子類不能訪問父類任何成員

projected繼承:子類可以訪問父類的public成員和protected成員,繼承後的屬性都是protected

預設是private繼承。

class a: b

class a: private b

class a: public b

派生類並不繼承基類的建構函式,而是在自己的建構函式中呼叫基類的建構函式來初始化基類的資料域。

派生類的建構函式中如果沒有顯式呼叫基類的建構函式,就會呼叫基類的無實參建構函式。

如果要把乙個類設計為拓展類,最好設計乙個無實參的建構函式,以避免程式設計錯誤。

只能在類的實現中呼叫基類的建構函式,而不能在類的宣告中呼叫。

同樣,派生類更不可能繼承基類的析構函式。

建構函式鏈:派生類的建構函式先呼叫基類的建構函式,再初始化其他成員

析構函式鏈:派生類的析構函式先釋放其他成員,再呼叫基類的析構函式

示例:

#includeusing namespace std;

class person

~person() };

class employee:public person

~employee() };

class fac :public employee

~fac() };

int main()

結果:

person建構函式

employee建構函式

fac建構函式

fac析構函式

employee析構函式

person析構函式

乙個類中,friend關鍵字可以宣告友元函式和友元類,被宣告為友元的可以訪問這個類的私有成員

(1)友元函式

#include using namespace std;

class myclass

};int f()

};class a

};int main()

物件導向程式設計(封裝 繼承 多型)

1 保證 資料的安全性 2 遮蔽 複雜性 3 封裝型別 普通 封裝成方法 方法都封裝在乙個類中。using system namespace lesson01 public void close class mainclass 1 被繼承類 父類 基類 繼承類 子類 派生類 2 子類可以擁有父類的全...

物件導向(封裝 繼承)

1.類的訪問修飾符有public private internal protected。其中pubulc 公共的,只要引用了命名空間,就可以隨意進行訪問 private 私有的,只有當前類內部才可以訪問 internal 內部的,當前程式集內可以訪問,程式集就是命名空間,此修飾符是預設的 prote...

物件導向 封裝 繼承

建構函式 建構函式 建立乙個類的函式 每乙個類都有建構函式,訪問修飾符必須是public的,並且不需要寫任何返回值,方法名與類名一致 自己寫的類 使用者自定義型別 如果要使用自定義型別產生出來的 物件 必須有乙個例項化的過程 例項化格式 型別名 ss new 建構函式 訪問修飾符 4個 public...