构造器详解
当我们创建一个类进行编译后,.class会自动添加一个与类同名的方法,这就是构造器,一个类即使什么都不写,它也会存在一个构造器,例:
这样是可以正常运行的,不会报错,我们找到Person的.class文件看看里面的内容如下:
可以看到,Person类的字节码文件中自动产生了一个Person()与类名相同的方法,这就是自动生成的构造器。
构造器的特点
类中的构造器也成为构造方法,是在进行创建对象的时候必须要调用的,并且构造器有以下两个特点:
- 必须和类名字相同
- 必须没有返回类型,也不能写void
构造器的作用
- 使用new关键字,本质是在调用构造器(使用new关键字,必须有构造器)
- 实例化初始值(用来初始化值)
package com.ts;
public class Application {
public static void main(String[] args) {
//new 实例化了一个对象
Person person = new Person();
System.out.println(person.name);
}
}
public class Person {
String name;
public Person(){
this.name = "Ts";
}
}
如果不适用构造器进行name的初始化值,则name的默认值为null,如下所示:
package com.ts;
public class Application {
public static void main(String[] args) {
//new 实例化了一个对象
Person person = new Person();
System.out.println(person.name);
}
}
public class Person {
String name;
}
有参构造
带有参数的构造器为有参构造器,一旦定义了有参构造,则无参构造必须显式定义,否则会报错:
正确写法:
package com.ts;
public class Application {
public static void main(String[] args) {
//new 实例化了一个对象
Person person = new Person();
System.out.println(person.name);
}
}
public class Person {
String name;
public Person(){
}//必须在此处显式定义无参构造
public Person(String name){
this.name = name;
}
}