一、作用
构造方法是解决属性封装的问题的,对类中的属性进行初始化(因为private属性封装后对外不可见,无法在主方法中直接调用,需要通过构造方法初始化一下类中的属性,即中转一下,重新传入参数)
为什么同一个类中可能有多个构造方法(只是入参不一样)?
因为可能实例化(new)的对象需要的不一样,比如类中有A、B、C三个属性都封装了,实例化(new)的对象小王,只需要初始化A属性,即只对A属性重新赋值,B、C不用动,那么他只需要在new的时候使用只对A属性初始化的抽象方法就行了。而如果new的对象小张,需要初始化A、B,那么就需要定义穿A、B两个参数的构造方法了。
二、参数
若没有定义任何构造方法,程序会为你取一个不带任何参数的构造函数,那麼你产生类的对像时只能用不带参数的方法。
如:class A { } //没有任何构造函数,
class B{ A a = new A(); } //A()不能带任何参数。
即:自定义的构造方法有几个参数,在new新对象进行覆写时就要传入几个参数。
三、使用
当实例化对象时,构造方法会被自动调用,所以我们应该是实例化的构造方法
1、格式
访问权限 类名(参数类型,参数){函数体};
注:(1)方法名与类名一样(2)没有返回值类型的声明(void也不行),因为对类中的属性进行初始化,工作范围是属性,不参与方法的工作(3)函数体不能有return
2、class A{
private string parameter = "××";
public A(string parameter){
this.parameter = parameter;
}
}
四、注意
有参数的构造方法,目的是初始化成员变量的值,或者实例化的时候传入一些参数,我们同时可以很好地控制参数的合法性,并且有选择的进行初始化,为程序设计带来方便
另外要注意:有参数的构造方法可以和无参数的构造方法同时存在,也就是说一个类中允许出现两个构造方法,并且一个有参数一个无参数;
那么我们实例化对象的时候,如果不写参数比如:Hello he = new Hello();这样系统就调用无参数的构造方法;
如果同时实例化另外一个对象:Hello he1 = new Hello(1.2f,2.3f,3.0);那么系统就会调用我们所写的有参数的构造方法,
如果我们只定义了有参数的构造方法没有定义无参的构造方法,那么我们实例化对象的时候必须赋初始值,否则系统不会给我们添加无参的构造方法
另外构造方法和普通方法一样可以重载,我们可以根据需要来实例化对象