Java中,構造器(Constructor)是一種特殊的方法,用于在創建對象時初始化對象的屬性。每個類都至少有一個構造器,如果程序沒有提供構造器,Java編譯器會為該類生成一個默認的構造器。
構造器與普通方法的不同之處在于:
? 構造器的方法名必須與類名相同; ? 構造器沒有返回類型; ? 每個類可以有多個構造器,構造器可以重載; ? 如果一個類沒有定義構造器,Java編譯器會為其生成默認構造器,該構造器將所有實例變量初始化為默認值; ? 如果一個類定義了至少一個構造器,Java編譯器就不會再生成默認構造器了;
下面使用代碼來演示Java構造器和構造方法的使用:
public class Student { private String name; private int age; // 構造器一 public Student() { name = "Unknown"; age = 0; } // 構造器二 public Student(String n, int a) { name = n; age = a; } // 設置姓名 public void setName(String n) { name = n; } // 設置年齡 public void setAge(int a) { age = a; } // 獲取姓名 public String getName() { return name; } // 獲取年齡 public int getAge() { return age; } public static void main(String[] args) { /* 使用構造器一創建學生 */ Student s1 = new Student(); System.out.println("學生姓名:" + s1.getName()); System.out.println("學生年齡:" + s1.getAge()); /* 使用構造器二創建學生 */ Student s2 = new Student("張三", 18); System.out.println("學生姓名:" + s2.getName()); System.out.println("學生年齡:" + s2.getAge()); /* 修改學生姓名和年齡 */ s1.setName("李四"); s1.setAge(20); System.out.println("學生姓名:" + s1.getName()); System.out.println("學生年齡:" + s1.getAge()); } }
在上面的代碼中,定義了兩個構造器,一個是默認構造器,一個是帶參數的構造器。我們來看一下main方法運行后的輸出結果:
學生姓名:Unknown 學生年齡:0 學生姓名:張三 學生年齡:18 學生姓名:李四 學生年齡:20
從輸出結果中可以看出,使用構造器一創建的學生,姓名和年齡都是默認值,而使用構造器二創建的學生,可以指定姓名和年齡。通過修改學生的姓名和年齡,可以看出這兩個屬性的值都得到了正確的修改。