明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

Java編程思想讀書筆記(4章)

[摘要]第4章 初始化和清理   一.以構(gòu)造函數(shù)(constructor)確保初始化的進(jìn)行    如果某個class具備構(gòu)造函數(shù),Java便會在對象生成之際,使用者有能力加以操作之前,自動調(diào)用其構(gòu)造函數(shù),于是便能名確保初始化動作一定被執(zhí)行。    二.函數(shù)重載(Method overloading)   ...
第4章 初始化和清理

  一.以構(gòu)造函數(shù)(constructor)確保初始化的進(jìn)行

   如果某個class具備構(gòu)造函數(shù),Java便會在對象生成之際,使用者有能力加以操作之前,自動調(diào)用其構(gòu)造函數(shù),于是便能名確保初始化動作一定被執(zhí)行。

   二.函數(shù)重載(Method overloading)

   1. 區(qū)分重載函數(shù)

   由于只能從函數(shù)名和函數(shù)的引數(shù)列來區(qū)分兩個函數(shù),而重載函數(shù)具有相同的函數(shù)名稱,所以每個重載函數(shù)都必須具備獨(dú)一無二的引數(shù)列。

   2. Default構(gòu)造函數(shù)

   1) default構(gòu)造函數(shù)是一種不帶任何引數(shù)的構(gòu)造函數(shù)。如果你所開發(fā)的class不具任何構(gòu)造函數(shù),編譯器會自動為你生成一個default構(gòu)造函數(shù)。

   2) 如果你自行定義了任何一個構(gòu)造函數(shù)(不論有無引數(shù)),編譯器就不會為你生成default構(gòu)造函數(shù)。

   3) 如果定義了一個class,如

   class Bush{
   Bush(int I){}
   }
   當(dāng)想用new Bush();來產(chǎn)生class的實(shí)例時,會產(chǎn)生錯誤。因?yàn)樵诙xclass時已定義了構(gòu)造函數(shù),所以編譯器就不會為class生成default構(gòu)造函數(shù)。當(dāng)我們用new Bush()來產(chǎn)生實(shí)例時,會嘗試調(diào)用default構(gòu)造函數(shù),但在class中沒有default構(gòu)造函數(shù),所以會出錯。如:

   class Sundae
   {
   Sundae(int i) {}
   }
   public class IceCream
   {
   public static void main(String[] args)

   {
   //Sundae x = new Sundae();會編譯出錯,無構(gòu)造函數(shù)Sundae()

   Sundae y = new Sundae(1);
   }
   }
   *:在定義一個class時,如果定義了自己的構(gòu)造函數(shù),最好同時定義一個default構(gòu)造函數(shù)
   3. 關(guān)鍵字this

   1) this僅用于函數(shù)之內(nèi),能取得“喚起此一函數(shù)“的那個object reference。

   2) 在構(gòu)造函數(shù)中,通過this可以調(diào)用同一class中別的構(gòu)造函數(shù),如

   public class Flower{
   Flower (int petals){}
   Flower(String ss){}
   Flower(int petals, Sting ss){
   //petals++;調(diào)用另一個構(gòu)造函數(shù)的語句必須在最起始的位置
   this(petals);
   //this(ss);會產(chǎn)生錯誤,因?yàn)樵谝粋構(gòu)造函數(shù)中只能調(diào)用一個構(gòu)造函數(shù)
   }
   }
   **:1)在構(gòu)造調(diào)用另一個構(gòu)造函數(shù),調(diào)用動作必須置于最起始的位置
   2)不能在構(gòu)造函數(shù)以外的任何函數(shù)內(nèi)調(diào)用構(gòu)造函數(shù)

   3)在一個構(gòu)造函數(shù)內(nèi)只能調(diào)用一個構(gòu)造函數(shù)

   4. Static的意義

   無法在static函數(shù)中調(diào)用non-static函數(shù)(反向可行)。為什么不能呢,我們看下面的例子。

   例4.2.4.1
   假設(shè)能在static函數(shù)中調(diào)用non-static函數(shù),那么(a)處就將出錯。因?yàn)樵跊]有產(chǎn)生Movie class實(shí)例之前,在就不存在Movie class內(nèi)的name實(shí)例,而在getName()中卻要使用name實(shí)例,顯然的錯誤的。

   class Movie{
   String name = “”;
   Movie(){}
   public Movie(String name) { this.name = name; }
   public static String getName() { return name; }
   }
   public class Test{
   public static void main(String[] args){
   //下面兩名先產(chǎn)生實(shí)例后再調(diào)用getName()沒有問題
   //Movie movie1 = new Movie(“movie1”);
   //String name1 = movie1.getName();
   //下面一名將出錯
   //String name2 = Movie.getname(); (a)

   }
   }