天天看点

构造函数

构造函数

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的构造函数。