1. 定义
当我们使用类通过new
关键字来创建一个对象的时候,其实是调用了这个类的构造方法。
2. 语法
通过实现一个跟类名一样
,但不带返回类型
的的方法,来写构造方法。
不带参数的构造函数称为“默认构造函数”。 无论何时,只要使用 new
运算符实例化对象,并且不为 new
提供任何参数,就会调用默认构造函数。
如下例1定义一个Car类的无参数构造方法
例1: 调用构造函数,但是不传递参数
public class Car
{
public int speed;
public Car()
{
speed = 50;
}
}
class TestCar
{
static void Main()
{
Car car = new Car();
Console.WriteLine(car.speed);
}
}
例2: 通过构造函数,传递初始值。
public class Car
{
public int wheels;
public int speed;
public int weight;
public Car(int speed, int weight)
{
wheels = 4;
this.speed = speed; // 通过this来访问当前类的字段。而不是传递过来的值
this.weight = weight;
}
}
class TestCar
{
static void Main()
{
Car car = new Car(200,5);
Console.WriteLine(car.speed, car.weight);
}
}
3. 方法注意点:
方法的标识符可以一样,但是参数的数据类型的顺序不可以一致。
举例如下:
public Person()
{
Console.WriteLine("1调用了Person的构造方法");
}
public Person(string name, int age)
{
this.name = name;
this.age = age;
Console.WriteLine("2调用了有name和age的构造方法");
Console.WriteLine("名字是:{0},年龄是:{1}", name, age);
}
public Person(string aaa, int bbb) // 这里会出现错误,会跟上面的方法分不清楚调用哪个、
{
//this.name = name;
//this.age = age;
//Console.WriteLine("2调用了有name和age的构造方法");
//Console.WriteLine("名字是:{0},年龄是:{1}", name, age);
}
public Person(int age, string name)
{
this.name = name;
this.age = age;
Console.WriteLine("3调用了有age和name的构造方法");
Console.WriteLine("名字是:{0},年龄是:{1}", name, age);
}
网友评论