構造函數
1. 創建對象的語句:Human zhangsan = new Human();
2. 實際上調用了系統自帶的方法來構造對象並進行初始化,即構造函數。
3. 構造函數的作用是生成對象,並對對象的實例變量進行初始化。系統自帶的默認構造函數是把所有的數字設爲0,所有的布爾變量設爲false,所有的對象變量設爲null。
package com.dzh.method;
public class Class_Method {
public static void main(String[] args) {
Human zhangsan = new Human();
zhangsan.print();//打印出zhangsan的屬性的默認值
}
}
class Human {
String name;
char sex;
int age;
String address;
public void print() {
System.out.println("name:" + name);
System.out.println("sex:" + sex);
System.out.println("age:" + age);
System.out.println("address:" + address);
}
}
4. 構造函數的特點:名字必須與類名相同且沒有返回值類型。
5. 構造函數的主要作用是對對象的變量進行初始化,如果不想把它們都初始化爲默認值,就需要自己編寫構造函數,通過有參數的構造函數可以把值傳遞給對象的變量。
6. Human的構造函數定義如下:
public Human(String hname, char hsex, int hage, String haddress) {
name = hname;
sex = hsex;
age = hage;
address = haddress;
}
創建對象時使用如下語句,這樣生成對象zhangsan 的屬性就被初始化爲相應的值。
Human zhangsan = new Human("zhangsan", '男', 20, "北京");
7. 已經定義了自己的構造函數,Java不再提供默認的構造函數,這時如果再使用默認的構造函數即Human zhangsan =new Human();編譯會出錯。只能使用程序中提供的構造函數來創建對象。
8. 構造函數的重載:根據不同的需求對構造函數進行重載,利用不同的構造函數進行對象的創建。 因爲有的時候並不需要對全部的變量進行初始化,而只對其中的一部分初始化即可。
package com.dzh.method;
public class Class_Method {
public static void main(String[] args) {
Human lisi = new Human();//調用構造函數1
lisi.print();
Human wangming = new Human("wangming",'女');//調用構造函數2
wangming.print();
Human zhangsan = new Human("zhangsan", '男', 20, "北京");//調用構造函數3
zhangsan.print();
}
}
class Human {
String name;
char sex;
int age;
String address;
//構造函數1
public Human(){
name = null;
sex = ' ';
age = 0;
address = null;
}
//構造函數2
public Human(String hname, char hsex) {
name = hname;
sex = hsex;
}
//構造函數3
public Human(String hname, char hsex, int hage, String haddress) {
name = hname;
sex = hsex;
age = hage;
address = haddress;
}
public void print() {
System.out.println("name:" + name);
System.out.println("sex:" + sex);
System.out.println("age:" + age);
System.out.println("address:" + address);
System.out.println("=============");
}
}
在Human類中提供了3個不同的構造函數以滿足構造對象是不同的需要。以上例子看出,創建3個對象分別使用了3個不同的構造函數,起到了不同的效果。Java這個功能在很多情況下非常有用。