構造函數
class a
{
public a()
}
與類名相同,無傳回值,且在初始化之前調用。
a a=new a();
其中的a()就是構造函數。一般我們不寫構造函數系統會自動生成一個無參且為空的構造函數。
a a
開辟了一個棧 裡邊用于放對象在記憶體中的位址
new a();
如果直接這樣寫生成了一個匿名對象,如果加到a 後邊則a的棧放的是該記憶體的位址。
初始化執行個體:
calss a
int age;
public int age
{
get{return age;}
set{age=value;}
}
string name;
public string name
get{return name;}
set{name=value}
//a類的構造函數
//this 代表但前對象。在一個類中this.age/this.age如果沒有限制則相同,有限制需用this.age
public a(int age,string name)
this.age=age;
this.name=name;
class program
static void main(string args[])
//a a=new a();
//a.age=15 報錯因為構造函數已經不是系統自帶的了,而是我們寫的帶有參數的哪個,若要這樣指派則需在a中再寫一個構造函數,無參且為空
//public a()
//{
//}
//而要初始化執行個體如:
a a=new a(15,"張三");
生成了一個執行個體a 且已經初始化
繼承:
子類将擷取父類的所有非私有的資料和行為。
子類有兩個有效類型
自身的類型
擷取父類的類型
(私有字段或方法可以繼承但不能通路而已)
構造函數是不能繼承的,每個類都有自己的構造函數。初始化子類會先調用父類的構造函數
例:
messagebox.show("a 出生了");
class b
public b()
messagebox.show("b 出生了");
static void main(sting args[])
b b=new b();
先彈出a出生了,後彈出b出生了
子類繼承父類,但初始化會調用父類無參的構造函數,如果沒有則編譯報錯,除非子類中能自己調用父類的有參的構造函數。
string hobby;
public string hobby
get{return hobby}
set{hobby=value}
//public b()
//報錯
public b(int age,string name,string hobby):base(age,name)//繼承父類有參的構造函數
this.hobby=hobby;
b b=new b(20,"峻桦","運動");
先調用a的構造函數,在調用b的構造函數。