Java基礎:第三十講 對象的建立和訪問

來源:互聯網
上載者:User

我們從現實世界中的對象抽象出類,然後根據現實世界中的類編寫軟體系統中的類,而程式在運行過程中是對象之間在互動,需要不停的建立對象,下面介紹如何建立對象。

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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.