无论是Java和C#都要求对象在建立时,其Field成员能够被初始化,于是一个对象在建立的时候需要调用其构造器(初始化方法)。
构造器的格式,example:
class Bread
{
String taste;
Bread() //构造器
{
//Initialization
}
}
构造器的标准格式要求构造方法必须与类名一致,不能有返回值类型标识(void也不行)。
当生成一个新对象时:首先为对象分配存储空间,然后调用构造器来对域成员进行初始化。
new Bread(),即生成一个新对象时,其构造器是被自动的调用的。当类中未显示的给出构造器时,编译器会调用默认的构造器完成域的初始化操作。
默认构造器初始化原则:对基本类型(int,long,float),其二进制位全部置0。对对象变量(即引用),置为null(同样也是将二进制位置0)。
注意:一旦用户定义了构造器后,系统的默认构造器即失效,必须按照定义的构造器给出初始化参数列表。
即:
class Bread
{
String taste;
} 此时,类文件中未定义构造器,将采用默认构造器, new Bread()可编译通过,taste被置为null;
若改为:
class Bread
{
String taste;
Bread(String str)
{
taste=str;
}
}
new Bread()将无法编译通过(无与其匹配的构造器,默认构造器失效), 必须改为 new Bread("sweat"),以满足定义的构造器的参数列表要求。
构造器的标准格式要求构造方法必须与类名一致?
1、任何名字都可能与类成员的名字相冲突;
2、编译器需要能够知道每个类得构造器方法,以进行调用。
在OOP中,构造器必须与类名一致,以保证编译器能正确的调用各个类的构造器。
构造器是在建立对象时自动调用的,其调用在对象建立好之前,构造器实质是一个public static方法,不属于具体对象,而是类。
但是JAVA中为求标记的的便利,隐去了对static关键字的要求。
有些时候,同一个类可能不止具有一个构造器,于是产生了对函数重载的需求。(OOP设计之初)
*因为构造器名必须与类名一致,那么具有多种初始化方式的类,该如何定义其构造器方法?函数重载!