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