物件導向基礎《二》 繼承

2021-06-09 01:23:29 字數 2621 閱讀 6224

4.類例項化過程:

1. 分配靜態成員的記憶體空間,此時空間儲存資料為0;

2. 執行靜態成員的初始化語句;

3. 執行基類的靜態建構函式;

4. 執行型別的靜態建構函式;

5. 分配成員的記憶體空間,此時空間儲存資料為0;

6. 執行成員的初始化語句;

7. 執行相應的基類建構函式;

8. 執行型別的建構函式。

設計模式:單例模式 (餓漢式,懶漢式)

單例模式:只能new

出乙個物件

餓漢式:

class single

private static single s = new single ();

public static single getinstance()

private static single s = null;

public static single getinstance(){

if (s == null)

s = new single();

return s;

命名空間 :1

乙個命名空間下可以有多個命名空間  

using

後:兩個不同命名空間下有兩個相同的類名,優先使用相同命名空間下的類,如果要使用其他命名空間下的類的話,就必須使用類的全名稱

2命名空間就相當於是虛擬資料夾。

using命名空間:就是匯入命名空間 繼承

一、1.

繼承:1).

為了重用父類的**;2)

.實現多型

2.1子類隱式呼叫父類的無參建構函式

2.2子類顯示呼叫父類的建構函式—

base

(引數列表)

3.子類

this

可以訪問子類所有的成員和父類的非私有成員,

base

訪問父類的非私有成員

4繼承的單根性:乙個類只能繼承乙個父類,不能繼承多個

5.注意:建構函式只能呼叫乙個建構函式(不管是this(),

還是base());

建構函式無法繼承

類可以使用父類的非私有成員(但子類物件中其實也包含了父類的私有成員。因為子類可以訪問父類的比如說公有屬性,那屬性就會去訪問父類的私有字段,如果不能繼承父類的私有成員,那麼這個公有屬性就訪問不到父類的私有成員了。)

子類和父類的物件 

當我們new

乙個子類時,在堆記憶體中開闢的空間大小是根據父子類的成員變數計算而來。

在堆記憶體中,既包含子類成員,也包含父類成員。

如果:父類 obj =new 

子類(),

obj只能操作堆空間裡的 父類成員。

子類 obj =new 

子類() ,

obj既能操作對空間裡的 父類成員也能操作子類成員。

但是,如果子類成員和父類成員有同名的話,那麼 此時obj

只能訪問到子類成員。

黎克特制替換原則

黎克特制替換原則:子類可以例項父類

強轉的時候必須是有直接繼承關係才能完成強轉,否則會出現異常

宣告是父類,例項化是子類物件,那麼這個父類變數可以被強制轉成子類

宣告是父類,例項化是父類物件,那麼這個父類變數不可以被強制轉換成子類。

5new 子類時,會呼叫子類建構函式,但父類建構函式會優先於 子類建構函式的方法體執行。

1.呼叫子類建構函式;

2.呼叫父類建構函式;

3.執行父類建構函式;

4.之執行子類建構函式

6. 當子類繼承父類,出現與父類相同的成員,那麼在

new時,物件中既包含 父類成員,也包含子類成員

但是:1 父類 

obj =new 

子類();

//此時會呼叫父類的同名成員

2 子類 

obj  =new 

子類();

//此時會呼叫子類的同名成員

7. 子類和父類的物件 

當我們new

乙個子類時,在堆記憶體中開闢的空間大小是根據父子類的成員變數計算而來。

在堆記憶體中,既包含子類成員,也包含父類成員。

如果:父類 obj =new 

子類(),

obj只能操作堆空間裡的 父類成員。

子類 obj =new 

子類() ,

obj既能操作對空間裡的 父類成員也能操作子類成員。

但是,如果子類成員和父類成員有同名的話,那麼 此時obj

只能訪問到子類成員

8.子類和父類具有相同的方法時呼叫子類的方法

public pig(string name): base(name)//通過

base

關鍵字 顯示呼叫 父類的建構函式

1.呼叫父類的同名屬性 

2.呼叫父類的同名函式  

3.呼叫父類的建構函式 4.和

this

的使用基本相同,專門用來在子類中訪問父類的成員

10. 例項化子類的流程:

初始化子類的成員,呼叫子類建構函式(

但沒執行

),初始化父類的成員, 呼叫父類建構函式,執行父類建構函式,執行子類建構函式。

PHP物件導向繼承(二)

原以為多型是乙個什麼樣複雜的概念,其實很簡單。多型就是指方法的重寫,定義乙個父類 介面 各個子類不同,但必須有介面所定義的方法,因此,這些應用統一介面的類就都有介面中定義的規範,這樣就滿足了介面所定的要求。物件序列化 序列化 1 將物件轉成字串 不用看懂 序列化 2 將字串轉會物件 反序列化 注意 ...

Python物件導向(繼承二)

主要內容 class parent def init self,race,country self.race race self.country country def information self print 我來自 是 人 format self.country,self.race def ...

Javascript物件導向程式設計(二) 繼承

上一次的文章,主要介紹了如何 封裝 資料和方法,從原型物件生成例項。今天要介紹的是,多個原型物件之間如何 繼承 比如,現在有乙個 動物 物件,function animal 那麼,下一步必然是為新的prototype物件加上constructor屬性,並將這個屬性指回原來的建構函式。o.protot...