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...