new一个对象的时候要用到构造函数,
例如Hello hello = new Hello();这时调用的是Hello的无参数构造方法;
Hello hello = new Hello("hi");这个是调用Hello有参数构造方法,
在JAVA中如果不写构造方法的话,会默认加上一个无参数的构造方法,但是如果已经有了一个有参数的构造方法,那么无参数的构造方法就不会默认被加上.
如果Hello类中已经有了一个有参数的构造方法,这时再使用Hello hello = new Hello();来创建对象的时候就会出错
这就是为什么书上要强调写了有参数的构造方法就最好加一个无参数的构造方法。
区别
有参数的构造方法的主要目的是为类中的属性初始化的
而无参数的构造方法,可以控制new对象。
--------------------------------------------------------------------------------------------------------------------------------
我生成了一个带参数的构造函数,但是没有写无参的,所以,报错,修改如下,问题解决
所以安全的办法就是生成一个有参的,用来new ,生成一个有参的,用来测试,赋值等
所以安全的办法就是生成一个有参的,用来new ,生成一个有参的,用来测试,赋值等
使用构造器时需要记住:
1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)
2.每个类可以有一个以上的构造器
3.构造器可以有0个、1个或1个以上的参数
4.构造器没有返回值
5.构造器总是伴随着new操作一起调用
构造方法: 语法
public 类名(){} (构造方法没有返回值, 构造方法:一般用于给对象赋初始值)
解决:参数名和 属性名 相同
-
修改参数名(不推荐)
-
使用this关键字
this: 关键字
1、指代当前对象
2、指代当前类 *
3、 指代构造方法 this(): 表示当前类的构造方法,只能放在首行