<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

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

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

        一.以構造函數(constructor)確保初始化的進行

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

         二.函數重載(Method overloading)

         1. 區分重載函數

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

         2. Default構造函數

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

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

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

         class Bush{
         Bush(int I){}
         }
         當想用new Bush();來產生class的實例時,會產生錯誤。因為在定義class時已定義了構造函數,所以編譯器就不會為class生成default構造函數。當我們用new Bush()來產生實例時,會嘗試調用default構造函數,但在class中沒有default構造函數,所以會出錯。如:

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

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

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

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

         2) 在構造函數中,通過this可以調用同一class中別的構造函數,如

         public class Flower{
         Flower (int petals){}
         Flower(String ss){}
         Flower(int petals, Sting ss){
         //petals++;調用另一個構造函數的語句必須在最起始的位置
         this(petals);
         //this(ss);會產生錯誤,因為在一個構造函數中只能調用一個構造函數
         }
         }
         **:1)在構造調用另一個構造函數,調用動作必須置于最起始的位置
         2)不能在構造函數以外的任何函數內調用構造函數

         3)在一個構造函數內只能調用一個構造函數

         4. Static的意義

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

         例4.2.4.1
         假設能在static函數中調用non-static函數,那么(a)處就將出錯。因為在沒有產生Movie class實例之前,在就不存在Movie class內的name實例,而在getName()中卻要使用name實例,顯然的錯誤的。

         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){
         //下面兩名先產生實例后再調用getName()沒有問題
         //Movie movie1 = new Movie(“movie1”);
         //String name1 = movie1.getName();
         //下面一名將出錯
         //String name2 = Movie.getname(); (a)

         }
         }



      日韩精品一区二区三区高清