字段初始值
在定义字段时,可以同时为字段赋值初始值。
但是初始值不能使用其他成员作为表达式,与顺序无关。
构造器
构造器是一个特殊的方法。他没有返回值,不能通过实例调用。必须通过new来调用。
声明构造器
声明构造器的语法为:定义一个没有返回值的方法,方法名和类名一致。
即便构造器大多数都是给别人使用的。但他的默认访问权限仍然是private的。不要忘记添加访问权限。
class 小兵
{
public int hp = 10;
public int atk;
public int def;
public 小兵(int hp, int atk, int def)
{
this.hp = hp;
this.atk = atk;
this.def = def;
}
}
如果一个类没有构造器,那么编译器会默认为其添加一个隐式的公开无参构造器。
在你声明了构造器后,那个默认的构造器就不存在了。
和方法一样,构造器可以重载。
使用构造器
构造器不能像常规方法一样调用,必须配合new关键字使用。
小兵 a = new 小兵(10,2,5);
为什么使用构造器
先于其他方法执行且必定执行
比如说其他方法在调用时需要依赖某些发生过的事。
比如输出一个人的姓氏
class 人
{
public string name;
public int age;
public char 获得姓氏()
{
return name[0];
}
}
对于公开的字段,如果让用户自己赋值,那他可能会忘记。
使用构造器可以强制他们给字段初始值。
构造器只执行一次
构造器只执行一次,那么可以较为安全地为私有字段赋初始值。
有些字段在开始需要从别人手里获得初始值,但在使用之后不希望用户知道了。
构造器处于初始化阶段,可以为只读字段赋初始值。
只读字段在构建完毕后不能重新赋值,但是构造器执行时还没有构建完毕。
自动判断构造器名
在明确将要创建的类型时,new表达式可以不写构造器名字。
例如在声明变量,填入函数实参,作为函数返回值时。