對象的引用和創建

對象的引用和創建

        類的一個對象就是類的一個實例,一個實例是一個類的特定個體,它區別於其它實例狀態。

1
2
TypeA;
A=newType();

        若想使用一個實例,第一步是聲明這個實例的引用(實質上是一個指針),聲明實例通過Type + 標識符實現,標識符充當了引用的角色。聲明的實例的引用在棧裏開闢了一塊內存,用來存儲今後被綁定的對象的地址信息。Type界定了這個標識符的所指向對象的類型。這個在塑型中將有詳細的討論。

        真正創造一個實例是通過關鍵字new + 構造方法實現的(不管表述如何,創建對象一定要使用到new),new 關鍵字爲對喜愛在堆區開闢了內存,同時構造方法對對象進行了初始化處理,最後通過=將這個對象反饋給引用。

        在Java 5後,基本數據類型都支持自動拆箱和裝箱。

類的結構

        一個類可以什麼都沒有(實際上如果只寫一個class A{},A裏面還是有內容的,它包含了系統爲它默認提供的無參構造函數),也可以只有Field或Method(這樣的類比較少見,通常用於特殊場合),我們來討論類中可能存在的Field和Method

  • 來自父類的Field和Method

        一個類裏肯定包含來自父類的的一些信息(Object可能除外),這些信息雖然沒有寫在名面上,但實際它們已經是該類的的一部分了。

  • 實例Field

        這類Field的特點是在每個該類的實例中都存在該field的一個副本,每個實例的該field值會不相同。

  • 實例Method

        這類Method必須使用 實例.Method()去引用,如果沒有實例,Method將不可執行。在此類Method中,引用的變量一般爲實例Field,寫作this.Field,不過一般情況下this是省略的。this實質上指當前運行環境下引用這個方法的實例。

  • 類Field

        類Field被static修飾,也被稱爲靜態field,這個field不需要實例,直接被類引用即可。一般情況下,類Field的作用是存儲該類所有對象共享的數據。        

  • 類Method

        類Method被static修飾,也被成爲靜態方法。靜態方法表示該類所有對象的一致行爲,所以在靜態方法中不可以使用this或者實例Field。

        包的作用的只有分爲三點,解決類名衝突問題,組織代碼文件,提供包一級的封裝和存取權限。

  • 類名衝突

         在java文件編譯中,一個java源文件就是一個編譯單元,一個編譯單元只有一個Public的class,並且該class的名稱應和文件名稱保持一致。其他類被成爲輔助類。

        一個java的編譯單元需要包含三個部分,一是所屬的包,沒有指定包則屬於默認包。要用到的外部包,也就是import的那部分,表示這個類的某些變量或方法中的某些參數用到了這些包。java.lang裏的包是自動導入的,不需要import去顯式聲明。最後是類或者接口的聲明,及class A的這部分,如下舉例:

1
2
3
4
5
6
//
packagecom.ican.langsky.mypackage;
//
importjava.util.ArrayList;
//
publicclassMyListextendsArrayList{}

        包名命名遵循以下原則:

        1. 將機構域名反序,作爲包名引導

        2. 只可用標識符字符,最小小寫,其他字符使用_代替

        3. 包名任何部分不要和關鍵字衝突,爲了避免這種情況,使用_作爲包名後綴

        4. 如果在java文件第一行不指定包,則這個java文件屬於默認包

  • 組織文件
  • 提供封裝和存取權限
發佈了42 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章