C# 构造函数
概念:
构造函数是一种特殊的方法,主要用来在创建对象时初始化对象。
构造函数的重载:特别的一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同,来区分它们。
重载:同一个类里面,方法名称相同,方法参数列表不同(参数的类型,个数),与参数的返回值类型无关。
注意:
|
构造函数 |
一般方法 |
命名 |
命名必须和类名完全一致。 |
不能和类名相同。 |
功能 |
初始化对象赋初值。 没有返回值;不能用void修饰。 |
根据方法而定。 必须有返回值类型。 |
调用 |
不能直接调用,必须通过new运算符创建对象时才会自动调用。 |
程序执行到它的时候调用。 |
默认存在 |
存在默认构造函数(不带参数)。 |
不存在。 |
定义:
class A
{
public A(){}//不带参数的构造函数,又名默认构造函数。
public A(int a ){}//带参数的构造函数。
//当两者同时存在时,看类是如何实例化的。
private A(int a ){}//私有构造函数
}
使用:
A a=new A();或者A a=new A(7);
注意:如果类里面没有定义构造函数,编译器会自动生产一个空构造函数,类的各个成员都赋上默认值。
构造函数分:实例构造函数、私有构造函数、静态构造函数。
(1)实例构造函数
using System; class Point { public double x, y; public Point() { this.x = 0; this.y = 0; } public Point(double x, double y) { this.x = x; this.y = y; } } class Test { static void Main() { Point a = new Point(); Point b = new Point(3, 4); // 用构造函数初始化对象 } }
(2)私有构造函数
通常用在只包含静态成员的类中,如果类只有私有构造函数而没有公共构造函数,则其他类(除嵌套类外)无法创建该类的实例。
注意,默认情况下属性为private。
(3)静态构造函数
1.静态构造函数既没有访问修饰符,也没有参数,静态构造函数不可以被继承。
2.一个类只能有一个静态构造函数,最多只能运行一次。
3.在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类,也就是无法直接调用静态构造函数,也无法控制什么时候执行静态构造函数。
4.如果没有静态构造函数,而类中的静态成员有初始值,那么编译器会自动生成默认的静态构造函数。
using System; class test{ public class person { static string sex; static person() { sex = "woman"; Console.WriteLine("静态析构函数:"+sex); } } public class student { static void Mian(String[] args) { person p = new person();
Console.Read();
}
}
}