Java构造方法是啥,有什么作用
Java的构造方法, 也被称之为构造器,名称必须与类名相同,在创建对象时,编译器会默认调用,只调用一次,构造方法是用来创建对象的,并且同时给对象的属性赋值
构造方法如何定义?
权限修饰符 构造方法名称(参数列表) { ...定义方法体 }
构造方法中千万不要写 static,规范为: public name(n1, n2…)
构造方法不需要指定返回值类型,也不能写void,写上void表示普通方法,就不是构造方法了
构造方法该如何调用?
使用 new 运算符来调用我们的构造方法
对于new的定义:
"new"可以说是Java开发者最常用的关键字,我们使用new创建对象,使用new并通过类加载器来实例化任何我们需要的东西
👆 // 如果有参数就写参数,没有就不写,下章独立出一个形参,实参使用的文章! new 构造方法名(参数列表)
案例(利用构造方法完成一个时间打印)
// 时间类 public class Date { // 定义年月日 private int year; private int month; private int day; // 定义Date类中的Date构造方法, 接收三个形参: 年月日 public Date(int year, int month, int day) { // 将形参赋值为当前类中的 year, month ,day this.year = year; this.month = month; this.day = day; System.out.println("调用了构造方法"); } // 打印年月日的方法 public void PrintDate() { System.out.println(year + "/" + month + "/" + day); } // 程序入口main方法 public static void main(String[] args) { // new创建一个对象 Date d = new Date(2023, 5, 17); d.PrintDate(); } }
输出应该是: 2023/5/17
构造方法必须与类名相同
因为如果构造方法的名字与类名不相同,JAVA的编译器就会将该方法归结为成员方法,而不会将其认定为构造方法,而构造方法是无返回值类型的,但是成员方法是必须有返回值类型, 对于Java构造方法的规定,我们只需要做到遵循即可
构造方法可以重载吗?
构造方法是可以重载的
public class Date { // 定义年月日 private int year; private int month; private int day; // 构造方法的重载 public Date() { this.year = 2023; this.month = 5; this.day = 21; } // 定义Date类中的Date构造方法, 接收三个形参: 年月日 public Date(int year, int month, int day) { // 将形参赋值为当前类中的 year, month ,day this.year = year; this.month = month; this.day = day; System.out.println("调用了构造方法"); } // 打印年月日的方法 public void PrintDate() { System.out.println(year + "/" + month + "/" + day); } // 程序入口main方法 public static void main(String[] args) { // new创建一个对象 Date d = new Date(2023, 5, 17); d.PrintDate(); } }
上述代码中,两个构造方法名称相同,参数列表不同,即构成了构造方法的重载!
啥是缺省构造器?
如果在一个类中,你没有提供任何的构造方法,但是你创建对象了,系统会提供给你一个无参数的构造方法(一定是个无参数的构造方法),由系统提供的这个方法便称之为缺省构造器
public class Date { // 定义年月日 private int year; private int month; private int day; // 打印年月日的方法 public void PrintDate() { System.out.println(year + "/" + month + "/" + day); } // 程序入口main方法 public static void main(String[] args) { // new创建一个对象 Date d = new Date(); d.PrintDate(); } }
我们只创建了对象,但是并没有显式的定义构造方法,这时候还是能够new出对象,因为java内部已经提供给你了一个无参构造器
如果你的代码中已经new创建了一个对象,没有参数,但是你代码中已经有了一个有参数的构造方法,则系统是不会自动为你创建一个无参构造器的,所以此情况下会编译报错!👇
public class Date { private int year; private int month; private int day; public Date(int year, int month, int day) { this.year = year; this.month = month; this.day = day; System.out.println("调用了构造方法"); } public void PrintDate() { System.out.println(year + "/" + month + "/" + day); } public static void main(String[] args) { Date d = new Date(); // 编译会报错,因为已经有构造方法了系统不会再为你生成了! d.PrintDate(); } }
感谢收看本博客, 以上就是Java构造方法的使用以及大部分的注意事项。 Java构造方法 —— 终