一、建構函式
建構函式,一種特殊的方法,用來在建立物件時初始化物件.
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...