Java构造方法的使用(附带实例)
在 Java 中,成员变量都是在对象建立之后,由相应的方法来对其赋值。如果一个对象在被创建时就完成所有的初始化工作,将会非常简洁。
Java 提供了一个特殊的成员方法——构造方法。构造方法是一种特殊的方法,分为无参构造方法和有参构造方法两种,用来在对象被创建时初始化成员变量。
构造方法有如下 3 个特征:
接下来,通过案例来演示如何定义类的无参构造方法。
细心的读者会发现,在之前的案例中并没有定义构造方法,但是也能被调用。这是因为类未定义任何构造方法,系统会自动提供一个默认构造方法。但是,如果已存在带参数的构造方法,则系统将不会提供默认构造方法。
接下来,通过案例来演示如何定义类的有参构造方法。
修改第 17 行代码如下:
再次强调,只有当类没有任何构造方法时,系统才会提供无参构造方法。编写程序时,为避免出现编译错误,每次定义类的构造方法时,预先定义一个无参的构造方法,有参的构造方法可以根据需求再定义。
Java 提供了一个特殊的成员方法——构造方法。构造方法是一种特殊的方法,分为无参构造方法和有参构造方法两种,用来在对象被创建时初始化成员变量。
构造方法有如下 3 个特征:
- 构造方法名与类名相同。
- 构造方法没有返回值类型。
- 构造方法中不能使用 return 返回一个值。
接下来,通过案例来演示如何定义类的无参构造方法。
class Dog { public Dog() { // 无参构造方法 System.out.println("狗类的构造方法自动被调用"); } } public class Demo { public static void main(String[] args) { System.out.println("声明对象:Dog d = null"); Dog d = null; // 声明对象时不调用构造方法 System.out.println("实例化对象:d = new Dog()"); d = new Dog(); // 实例化对象时调用构造方法 } }程序的运行结果如下:
声明对象:Dog d = null
实例化对象:d = new Dog()
狗类的构造方法自动被调用
细心的读者会发现,在之前的案例中并没有定义构造方法,但是也能被调用。这是因为类未定义任何构造方法,系统会自动提供一个默认构造方法。但是,如果已存在带参数的构造方法,则系统将不会提供默认构造方法。
接下来,通过案例来演示如何定义类的有参构造方法。
class Dog { private String name; // 声明名字私有属性 private int age; // 声明年龄私有属性 public Dog(String str, int n) { // 有参构造方法 name = str; age = n; } public void show() { // 定义显示信息的方法 System.out.println("名字:" + name + ",年龄:" + age); } } public class Demo { public static void main(String[] args) { Dog d = new Dog(); // 这里应该是Dog d = new Dog("名字", 年龄); d.show(); } }程序编译报错,提示“Expected 2 arguments but found 0”,中文含义为“期待 2 个参数,但是发现 0 个”,出现错误的原因在于,类中已经提供有参数的构造方法,系统将不会提供无参构造方法,编译器因找不到无参构造方法而报错。
修改第 17 行代码如下:
Dog d = new Dog("旺财", 5);程序的运行结果下:
名字:旺财,年龄:5
从程序运行结果可发现,实例化对象时调用了有参构造方法为属性赋值。再次强调,只有当类没有任何构造方法时,系统才会提供无参构造方法。编写程序时,为避免出现编译错误,每次定义类的构造方法时,预先定义一个无参的构造方法,有参的构造方法可以根据需求再定义。