更新时间:2022年07月26日09时49分 来源:传智教育 浏览次数:
在Java中的每个类都至少有一个构造方法,如果在一个类中没有定义构造方法,系统会自动为这个类创建一个默认的构造方法,这个默认的构造方法没有参数,方法中没有任何代码,即什么也不做。
下面程序中Student类的两种写法,效果是完全一样的。
第一种写法:
class student { }
第二种写法:
class Student { public Student () { } }
对于第一种写法,类中虽然没有声明构造方法,但仍然可以用new Student()语句创建Student类的实例对象,在实例化对象时调用默认的构造方法。
由于系统提供的构造方法往往不能满足需求,因此,通常需要程序员自己在类中定义构造方法,一旦类定义了构造方法,系统就不再提供默认的构造方法了,具体代码如下:
class Student { int age; public Student (int n) { age = n; } }
上面的Student类中定义了一个有参构造方法,这时系统就不再提供默认的构造方法。下面再编写一个测试程序调用上面的Student类,如文件3-8所示。
文件3-8 Example08.java
public class Example08 { public static void main (String[] args) { Student stu = new Student () ; // 实例化Student对象 } }
运行文件3-8编译器会报错,错误信息如图3-13所示。
图3-13 文件3-8编译错误信息
从图3-13可以看出,编译器提示无法将Student类的无参构造方法应用到有参构造方法,原因是调用new Student()创建Student类的实例对象时,需要调用无参构造方法,而Student类中定义了一个有参的构造方法,系统不再提供无参的构造方法。为了避免上面的错误,在一个类如果定义了有参构造方法,最好再定义一个无参构造方法。
需要注意的是,构造方法通常使用public进行修饰。