-
类中的构造器也称为构造方法,世在进行创建对象的时候必须要调用的。并且构造器有以下两个特点
- 必须和类的名字相同
- 必须没有返回类型,也不能写void
-
构造器必须掌握!
-
一个类即使什么也没写,也会存在一个方法
//写一个空的Person类=========================
public class Person1 {}
//然后在主程序调用它==========================
public class Application1 {
public static void main(String[] args) {
Person1 person1 = new Person1();
System.out.println(person1)
}
}
====运行结果====
OOP.demo.Person1@2f4d3709 //返回这样的内容,是不会报错的
- 这时我们打开Person1的class文件就能看到:
public class Person1 {
public Person1() {
}
}
//可以发现编译后自动为我们添加了一个方法
- 我们也可以显式定义一个无参数构造器,如下
public class Person1 {
public Person1() {}
}
- 利用构造器实例化初始值
public class Person2 {
String name;
public Person2() {
this.name = "acolyte";
}
}
//==========================================
public class Application2 {
public static void main(String[] args) {
Person2 person2 = new Person2();
System.out.println(person2.name);
}
}
====输出结果====
acolyte
-
使用new关键字,本质是在调用构造器。
-
一旦定义了有参构造,无参构造就必须显式定义。
//创建一个有参构造===========================
public class Person3 {
String name;
public Person3(String name){
this.name = name;
}
}
//继续使用刚才无参构造的主程序=================
public class Application3 {
public static void main(String[] args) {
Person3 person3 = new Person3();
System.out.println(person3.name);
}
}
====运行报错====
无法将类 OOP.demo.Person3中的构造器 Person3应用到给定类型
- 给上述代码增加一个显式构造。
public class Person3 {
String name;
public Person3() {} //只需要这么一行
public Person3(String name){
this.name = name;
}
}
//主程序不变======================================
public class Application3 {
public static void main(String[] args) {
Person3 person3 = new Person3();
System.out.println(person3.name);
}
}
====运行结果====
null
//不再报错了,输出null只是因为没有赋值。
- IDEA中,使用
alt
+Insert
快捷键,可以自动生成构造器。可选“Select None”(无选择),生成无参构造。 - 我试了一下,如果类中没有定义属性(就是
String name;
等声明语句),会自动生成无参构造。如果定义了各种属性,可以在生成构造器时选择各种属性生成构造器。 this.…
的值一般是当前类中的,而this.…=
后面的是参数传进来的值。