我們從現實世界中的對象抽象出類,然後根據現實世界中的類編寫軟體系統中的類,而程式在運行過程中是對象之間在互動,需要不停的建立對象,下面介紹如何建立對象。
1、對象的執行個體化
對象的建立是通過關鍵字new調用類的構造方法完成的,也稱為對象的執行個體化,例如要建立Person的對象,可以使用下面的代碼:
new Person();
如果構造方法需要參數,在調用的時候需要提供參數,例如:
new Person("張三");
2、對象引用
為了以後能夠訪問該對象,通常需要建立一個對象引用來指向該對象,例如下面的代碼:
Person p = new Person("張三");
Person p的作用是什麼呢?類似於int a,定義了一個變數p,類型為Person,我們通常稱這個p為對象引用,而Person是這個對象引用的類型,有時候我們所說的對象指的是這個對象的引用,對對象的訪問是通過這個引用完成的,與C++中的指標類似。
3、對象方法訪問
接下來就可以訪問新建立的對象的方法了。
p.setHeight(165);
只要Person的方法允許訪問,就可以通過p加上“.”進行訪問。
需要注意,在訪問某個對象時要確保對象引用指向了對象執行個體,例如下面的代碼將產生錯誤:
Person p;
p.setName("李四");
這時候會報錯,錯誤為:NullPointException。雖然定義了對象引用p,但是沒有把p指向某個具體的對象(又稱為執行個體),所以p的值是null,所以在調用p的方法的時候會產生NullPointException。
4、對象成員的初始化
構造方法用於對成員變數進行初始化,如果在構造方法中沒有對某個成員變數進行初始化,則系統會給定預設值。如果是基本類型的成員變數,給定的預設值如下:
char類型:編碼為0的字元
數字(byte short int long):0
float類型和double類型:0.0
布爾類型:false
如果是參考型別的成員變數(非基本類型),則給定預設值為null,通常可以在執行個體化對象之後在對成員變數賦值,可以通過set方法完成。有時候也會提供專門的初始化訪問,例如initialize。例如:
Person p = new Person();
p.setName("李四");
p.setHeight(175);
在調用對象的參考型別成員變數的時候,一定要確保不是null。
5、完整的代碼
下面是完整的代碼:
package test;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Person {
private int[] a;
private int height;
private Date birthday;
private String name;
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person() {
}
public Person(String name) {
this.name = name;
}
public Person(String name, int height) {
this(name);
this.height = height;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public static void main(String args[]){
// 建立對象並執行個體化
Person p = new Person();
// 對成員變數賦值
p.setName("李四");
p.setHeight(175);
String birthday = "1989-3-11";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try{
p.setBirthday(df.parse(birthday));
}catch(Exception e){
}
// 輸出成員變數的值
System.out.println("姓名為:"+p.getName());
System.out.println("身高為:"+p.getHeight());
System.out.println("生日為:"+df.format(p.getBirthday()));
}
}
關於異常處理,在後面介紹。關於日期參見:第十六講 日期和時間的使用
上一次:
第二十九講 成員方法下一次:
第三十一講 常量成員李緒成 CSDN Blog:http://blog.csdn.net/javaeeteacher邀請您為好友:http://student.csdn.net/invite.php?u=124362&c=7be8ba2b6f3b6cc5