构造方法的特点:
1、构造方法的方法名必须和当前的类名保持一致。
2、构造方法是没有返回值的,也就是在书写构造方法的时候不能书写返回值类型(注意这里连void都不能写)可以添加修饰符
构造方法中需要注意的问题:
1、如果在一个构造方法中调用其他的构造方法,那么这个this()调用必须写在该类这个构造方法中的第一行。
2、在一个类中的构造方法可以调用其他的构造方法,但是不能形成相互嵌套在一起调用,因为调用会无法停止,导致对象创建无法正常结束。
3、构造方法是没有返回值的,如果在一个类中书写了一个方法,方法名和类名一致,但是这个方法有返回值类型,那么这个方法不是构造方法,而是一个一般的方法。开发时不要把普通的方法名称定义的和类名一致
4、构造方法可以调用一般方法吗?
构造方法是可以调用一般方法的。构造方法在运行的时候,是被某个正在创建的对象调用的。 也就是说明当前这个对象在堆已经存在,只是正在进行初始化动作,这个时候对象已经有了,那么就可以通过这个对象调用一般的方法了。
5、一般方法可以调用构造方法吗?
不可以。因为一般方法在运行的时候,说明对象早已经创建完成了,那就说明构造方法早就执行过去了。构造方法是在创建对象的过程中执行的方法,而一般方法运行的时候,对象已经存在,构造方法执行了。 为什么要this调用构造方法,而不使用构造方法名调用构造方法呢?由于在一个类中可以把普通的方法的名字定义的和构造方法名称一致,这样在构造方法中通过名称调用其实根本无法调用其他的构造方法,只能调用本类的一般方法。 所以我们要调用构造方法,只能使用this。
程序代码:
class Person
{
String name;
int age;
//这个构造方法是给姓名和年龄同时初始化的
Person(String nm , int a)
{
//name = nm;
this(nm);//在调用本类中的可以接收一个参数并且是String类型的构造方法
//this(a); 这里报错,因为this()只能放在第一行,而第一行已经调用了其他的构造方法
//调用一般方法
Person(nm,a);
}
//只能给姓名进行初始化
Person(String nm )
{
//this(nm,123);
name = nm;
}
}