Java--相關特性

來源:互聯網
上載者:User

標籤:2.3   注意   一模一樣   方式   覆蓋   函數   避免   規範   多個   

1.繼承(關鍵詞:extends):(子父類)
  1.提高代碼的複用性。
  2.讓類與類之間產生了關係。有了這個關係,才有了多態的特性。

1.1變數
  如果子父類中出現非私人的(private)同名成員變數時,子類要訪問本類中的變數,用this,子類要訪問父類中的同名變數,用super。
  super的使用和this使用幾乎一致。
  this代表的是本類對象的引用。
  super代表的父類對象的引用。

1.2 子父類中的函數
  當子類出現和父類一模一樣的函數時,
  當子類對象調用該函數,會運行子類函數的內容。如同父類的函數被覆蓋一樣。

  這種情況是函數的另一個特性:重寫(覆蓋)

  當子類繼承父類,沿襲了父類的功能,到子類中,但是子類雖具備該功能,但是功能的內容卻和父類不一致,這時,沒有必要定義新功能,而是使用覆蓋特性,保留父類的功能定義,並重寫功能內容。

覆蓋注意事項:
  1.子類覆蓋父類,必須保證子類許可權大於等於父類許可權,才可以覆蓋,否則編譯失敗。(不寫入權限修飾符則是預設許可權,介於private和public之間。)
  2.靜態只能覆蓋靜態。

重載和重寫:
  重載:只看同名函數的參數列表。
  重寫:子父類中的方法名和傳回型別要一模一樣。(即:傳回型別 方法名() 要一樣)

1.3 子類中的建構函式。
  在對子類對象進行初始化時,父類的建構函式也會運行,那是因為子類的建構函式預設第一行有一條隱式的語句 super();

為什麼子類一定要訪問父類中的建構函式。
  因為父類中的資料子類可以直接擷取,所有子類對象在建立時,需要先查看父類是如何對資料進行初始化的。所以子類在對象初始化時,要先訪問一下父類中的建構函式。如果要訪問父類中指定的建構函式,可以通過手動定義super語句的方式來指定。

注意:super語句一定要定義在子類建構函式的第一行。


結論:
  子類的所有的建構函式,預設都會訪問父類中空參數的建構函式。
  因為子類每一個建構函式內的第一行都會有一句隱式super();
  當父類中沒有空參數的建構函式時,子類必須手動通過super語句形式來指定要訪問父類中的建構函式。
  當然:子類的建構函式第一行也可以手動指定this語句來訪問本類中的建構函式。子類中至少會有一個建構函式會訪問父類中的建構函式。(因為this()和super()都只能放在建構函式的第一行,所以在建構函式中只能存在其中一個。)


注意:千萬不要為了擷取其他類的功能,簡化代碼而繼承。必須是類與類之間有所屬關係才可以繼承。所屬關係 is a 。
2.final:最終。作為一個修飾符。
2.1 可以修飾類,函數,變數。
2.2 被final修飾的類不可以被繼承。為了避免被繼承,避免被子類重寫功能。
2.3 被final修飾的方法不能被重寫
2.4 被final修飾的變數是一個常量只能賦值一次,既可以修飾成員變數,也可以修飾局部變數。當描述事物時,一些資料的出現,值是固定的,那麼這時為了增強閱讀性,都給這些值起個名字。方便於閱讀。而這個值不需要改變,所以加上final修飾。 作為常量:常量的書寫規範所有字母都大寫,如果由多個單片語成。單詞間通過_串連。(eg: final double PI = 3.14; final int SET_ON = 1;)
2.5 內部類定義在類中的局部位置上時,只能訪問該局部被final修飾的局部變數。

3. 抽象:
3.1 抽象方法一定在抽象類別中。
3.2抽象方法和抽象類別都必須被 abstract關鍵字修飾。(abstract class 類名 { abstract void 方法名(); })
3.3抽象類別不可以用new建立對象。因為調用抽象方法沒意義。
3.4 抽象類別中的抽象方法要被使用,必須由子類重寫其所有的抽象方法後,建立子類對象調用。如果子類只覆蓋了部分抽象方法,那麼該子類還是一個抽象類別。
一般類和抽象類別的異同:抽象類別和一般類沒有太大的不同。該如何描述事物,就如何描述事物,只不過,該事物出現了一些看不懂的東西。這些不確定的部分,也是該事物的功能,需要明確出現。但是無法定義主體。通過抽象方法來表示。
抽象類別比一般類多了個抽象函數。就是在類中可以定義抽象方法。
抽象類別不可以執行個體法。
特殊:抽象類別中可以不定義抽象方法,這樣做僅僅是不讓該類建立對象。
4. 模版設計模式:
  在定義功能時,功能的一部分是確定的,但是有一部分是不確定,而確定的部分在使用不確定的部分,那麼這時就將不確定的部分暴露出去。由該類的子類去完成。
5.介面:
  初期理解,可以認為是一個特殊的抽象類別。當抽象類別中的方法都是抽象的(abstract),那麼該類可以通過介面的形式來表示。
  class :用於定義類
  interface:用於定義介面。介面也是一種類。可以產生class檔案。

介面定義時,格式特點:
  1.介面中常見定義:常量,抽象方法。介面的出現將“多繼承”通過另一種形式體現出來,即“多實現”。
  2.介面中的成員都有固定修飾符。
  常量:public static final
  方法:public abstract
  記住:介面中的成員都是public的。
  介面:是不可以建立對象的,因為有抽象方法(abstract)。需要被子類實現,子類對介面中的抽象方法全都重寫後,子類才可以執行個體化。否則子類是一個抽象類別。
  eg: interface Inter
  {
    //public static final 和public abstract修飾符缺少也可以,因為介面中的成員都有固定修飾符。但是開發中最好寫,增強閱讀性。
    public static final int SET_ON = 1;
    public abstract void show();
  }
  //使用介面implements
  class Test implements Inter
  {
    public void show(){} //需要重寫抽象方法show,才能建立對象
  }
  class InterfaceDemo
  {
    public static void main(String[] args)
    {
      Test t = new Test();
      System.out.println(t.SET_ON);

    }

  }

介面的特點:
  介面是對外暴露的規則。
  介面是程式的功能擴充。
  介面可以用來多實現。
  類與介面之間是實現關係,而且類可以繼承一個類的同時實現多介面。
介面與介面之間可以有繼承關係。
6.多態:
  定義:某一類事物的多種存在形態。
  eg:動物中貓、狗
  貓這個對象對應的類型是貓類型
  貓 x = new 貓();
  同時貓也是動物中的一種,也可以把貓稱為動物。
  動物 y = new 貓();
  動物是貓和狗具體事物中抽取出來的父類型。
  父類型引用指向了子類型對象。
6.1.多態的體現:
  父類的引用指向了自己的子類對象。
  父類的引用也可以接收自己的子類對象。
  eg: 父類 父類引用名 = new 子類();//型別提升。向上轉型。要使用子類特有功能,需要向下轉型:子類 新 子類引用名 = (子類)原父類引用名
  關鍵字: instanceof 判斷參考型別
    eg: if (a instanceof Cat)//判斷a是不是貓類型。
6.2.多態的前提:
   必須是類與類之間有關係。要麼繼承,要麼實現。
  通常還有一個前提:子類必須覆蓋(重寫)。

6.3.多態的好處:
  多態的出現大大的提高了程式的擴充性。
6.4.多態的弊端:
  提高了擴充性,但是只能使用父類的引用訪問父類中成員。

6.5在多態中非靜態成員函數的特點:
  在編譯時間期:參閱引用型變數所屬的類中是否有調用的方法。如果有,編譯通過,如果沒有,編譯失敗。
  在運行時期:參閱對象所屬的類中是否有調用的方法。
  簡單總結就是:成員函數在多態調用時,編譯看左邊,運行看右邊。
6.6在多態中成員變數的特點:
  無論編譯和運行,都參考左邊(引用型變數所屬的類。)
  在多態中靜態成員函數的特點:
    無論編譯和運行,都參考左邊(static本身就可以直接調用)。

7.object:是所有對象的直接或者間接父類,傳說中的上帝。
  該類中定義的肯定是所有對象都具備的功能。
  內部類的訪問規則:
    1.內部類可以直接存取外部類中的成員,包括私人。
    2.外部類要訪問內部類,必須建立內部類對象。

Java--相關特性

聯繫我們

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