《Java程式設計語言(第4版)》閱讀筆記(2)-類與對象

來源:互聯網
上載者:User

類有三種成員:欄位、方法和嵌套類與嵌套介面。學習類,可以從這三種成員的聲明、修飾符、初始化(包括類對象建立)和使用這些角度展開。這裡主要講的是欄位和方法。

聲明

欄位的聲明為,修飾符(可選)、類型名、欄位名、初始化子句(可選);
方法的聲明為,修飾符、傳回型別、方法簽名(方法名、參數列表)、異常和方法體。

修飾符

整理總結成了一張表,如下:

每一類修飾符,都可以展開成一個很龐大的話題,這裡不展開了。表中,“是”表示可以有,“否”表示不適用。

初始化

欄位初始化,最直接的就是使用初始化子句。欄位初始化子句,可以是常量、其他欄位和方法的調用。注意:(1)初始化子句必須保證類型正確;(2)初始化子句不能拋出異常。未被初始化的欄位會被賦予預設的初始值。

對象初始化,必須顯示初始化。初始化的方式是構造方法(書中稱為構造器)和初始化段(類裡面,除了欄位、方法、嵌套類和嵌套介面之外的用{}包括的程式碼片段,或者用static{}包括的程式碼片段,後者又稱靜態初始化,顯然只能對待用資料成員進行初始化)。

使用

這裡有一點顛覆了我的認識,即Java中的方法都是按值傳遞的,沒有按引用傳遞的。給個測試的例子代碼,如下:

 1 class A 2 { 3     int v = 0; 4 } 5  6 class B  7 { 8     public static void main(String[] args)  9     {10         A a = new A();11         System.out.println(a.v);12         foo(a);13         System.out.println(a.v);14         foo2(a);15         System.out.println(a.v);16     }17 18     public static void foo(A a)19     {20         a.v = 1;21     }22 23     public static void foo2(A a)24     {25         a = new A();26         a.v = 2;27     }28 }

如果按照以往的按引用傳遞的觀點,輸出的值應該是 0、1 、2(分三行顯示,下同),而實際是 0、1、 1。這說明了,傳遞給foo2的參數a,仍然只是一個拷貝,也就是按值傳遞的意思。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.