建構函式 一

2021-05-28 17:56:43 字數 2075 閱讀 5420

一、建構函式

建構函式,一種特殊的方法,用來在建立物件時初始化物件.

1、預設建構函式

我們在定義類時,如果沒有顯示的定義建構函式,那麼類會有乙個預設的無引數建構函式,例:

public class father

father f=new father();//這裡呼叫的就是預設的建構函式,但如果建構函式是protected或者private時則不一定能初始化了

2、自定義建構函式

當然,我們也可以自己定義建構函式,如果有自定義建構函式,那麼則不會再有預設的建構函式,除非自己再定義,例:

public class father

}father f1=new father();  //這樣是報錯的,因為並沒有無引數的建構函式

father f2=new father("初始化引數");   //這樣使用是沒有問題的

public class father

public father(string str)             

}father f1=new father();  //這樣就可以了

father f2=new father("初始化引數");   //這樣使用是沒有問題的

public class father

}father f1=new father();  //這樣是報錯的,因為並沒有無引數的建構函式

father f2=new father("初始化引數");   //這樣使用是沒有問題的

public class father

public father(string str)        

}father f1=new father();  //這樣就可以了

father f2=new father("初始化引數");   //這樣使用是沒有問題的

3、靜態建構函式

靜態建構函式,用於初始化任何靜態成員變數,或者用於執行僅需執行一次的操作,在初始化任何乙個例項或者引用任何靜態成員變數之前,將會自動呼叫靜態建構函式

public class father

static void staticmethod()        

}father f1=new father();    //這裡執行一次靜態建構函式下面就再也不執行了,總之,在第一次操作有關該類時會自動呼叫

father f2=new father();

4、建構函式和繼承關係

1)、父類有非私有的無引數建構函式

public class father

public father(string str)        

}public class child:father

child c=new child();

這樣我們在定義子類時,可以不定義建構函式,缺省會繼承父類的無引數建構函式,當然,我們也可以自己再定義子類的建構函式,例如:

public class child:father

//這是重寫父類的有引數建構函式,當然也可以呼叫父類的有引數建構函式

public child(string str):base(str)

}總結:對於父類的非私有的無引數的建構函式,子類可以隱示的繼承,但是對於非無引數建構函式則必須顯示的繼承

2)、父類有私有的無引數建構函式

public class father

public father(string str)        

}//這時,如果我們定義的子類中沒有建構函式,是報錯的,因為無法隱示的繼承父類私有的無引數建構函式,下面這個是編譯不通過的

public class child:father

重寫:這時,如果我們要繼承父類,必須要呼叫父類中非私有的建構函式,下面是正確的:

public class child:father

}3)、父類中沒有無引數的建構函式

其實這種情況和第2種應該是類似的,不再詳述!

C (一) 建構函式與拷貝建構函式

2.拷貝建構函式 類通過乙個或幾個特殊的成員函式來控制其物件的初始化過程,這些函式叫做建構函式。建構函式的任務是初始化類物件的資料成員。tip 建構函式不能宣告為const的。形式1 person 不帶任何引數,合成的預設建構函式就是該形式 合成預設建構函式初始化規則 1 如果存在類內的初始值,用它...

Swift 建構函式 一

知之部落格 期待與您交流!建構函式 建構函式 建構函式是一種特殊的函式,主要用來在建立物件時初始化物件,為物件成員變數設定初始值。swift中是支援函式過載的,所有的建構函式命都是init,雖然oc是不支援過載的,但是oc支援建構函式,oc中的建構函式是initwith 建構函式的作用 分配空間 設...

一 建構函式(C )

內容參考於 21天學通c 第八版 不去糾結c 的原理和細節,從c的角度去學習c 再通過c 專案去加深理解 1.示例1 建構函式是可以過載 include include using namespace std class human human string humansname,int human...