物件導向-介面與多態

來源:互聯網
上載者:User

標籤:擴充性   多態   .class   抽象類別   類型   提高   public   抽象方法   而且   

* Java語言的繼承是單一繼承,一個子類只能有一個父類(一個兒子只能有一個親爹)

 * Java語言給我們提供了一種機制,用於處理繼承單一的局限性的,介面

 *

 * 介面:介面是一個比抽象類別還抽象的類,介面裡所有的方法全是抽象方法,介面和類的關係是實現,implements

 * interface

 *

 * 格式:

 * interface 介面名 {

 *

 * }

 

 

* 介面的成員特點:

 * 只能有抽象方法

 * 只能有常量

 * 預設使用public&abstract修飾方法

 * 只能使用public&abstract修飾方法

 * 預設使用public static final來修飾成員變數

 *

 * 建議:建議大家手動的給上預設修飾符

 *

 * 注意:

 * 介面不能建立對象(不能執行個體化)

 * 類與介面的關係是實現關係,一個類實現一個介面必須實現它所有的方法

 

* 類與類:繼承關係,單一繼承,多層繼承

 * 類與介面:實現關係,多實現

 * 介面與介面的關係:繼承關係,多繼承

 

 

定義介面所在的仍為.java檔案,雖然聲明時使用的為interface關鍵字的編譯後仍然會產生.class檔案。這點可以讓我們將介面看做是一種只包含了功能聲明的特殊類。

 

 

 

介面中的方法全是抽象方法,直接new介面來調用方法沒有意義,Java也不允許這樣幹

 

類與介面的關係為實現關係,即類實現介面。實現的動作類似繼承,只是關鍵字不同,實現使用implements

 

其他類(實作類別)實現介面後,就相當於聲明:”我應該具備這個介面中的功能”。實作類別仍然需要重寫方法以實現具體的功能。

 

格式:

class 類 implements 介面 {

重寫介面中方法

 

1、介面中可以定義變數,但是變數必須有固定的修飾符修飾,public static final 所以介面中的變數也稱之為常量,其值不能改變。後面我們會講解fnal關鍵字

2、介面中可以定義方法,方法也有固定的修飾符,public abstract

3、介面不可以建立對象。

4、子類必須覆蓋掉介面中所有的抽象方法後,子類才可以執行個體化。否則子類是一個抽象類別。

 

介面和 抽象類別的 區別

1.共性:

不斷的進行抽取,抽取出抽象的,沒有具體實現的方法,都不能執行個體化(不能建立對象)

2.區別1: 與類的關係

(1)類與介面是實現關係,而且是多實現,一個類可以實現多個介面,類與抽象類別是繼承關係,Java中的繼承是單一繼承,多層繼承,一個類只能繼承一個父類,但是可以有爺爺類

(2)區別2: 成員

a.成員變數

抽象類別可以有成員變數,也可以有常量

介面只能有常量,預設修飾符public static final

b.成員方法

抽象類別可以有抽象方法,也可以有非抽象方法

介面只能有抽象方法,預設修飾符 public abstract

c.構造方法

抽象類別有構造方法,為子類提供

介面沒有構造方法

 

 

* 多態的前提:

 

 * 子父類的繼承關係

 

 * 方法的重寫

 

 * 父類引用指向子類對象

 

 *

 

 * 動態綁定:運行期間調用的方法,是根據其具體的類型

 

 

 

* 多態的成員特點:

 

 * 成員變數  編譯時間看的是左邊,運行時看的左邊

 

 * 成員方法  編譯時間看的是左邊,運行時看右邊

 

 * 靜態方法  編譯時間看的是左邊,運行時看的也是左邊.因為使用變數去調用靜態方法,其實相當於用變數類型的類名去調用

 

 *

 

 *

 

 * 編譯時間看的都是左邊,運行時成員方法看的是右邊,其他(成員變數和靜態方法)看的都是左邊

 

 

 

* 多態的優缺點

 

 * 優點:可以提高可維護性(多態前提所保證的),提高代碼的可擴充性

 

缺點:無法直接存取子類特有的成員

 

 

 

 

 

* final: 修飾符,可以用於修飾類、成員方法和成員變數

 

 * final所修飾的類:不能被繼承,不能有子類

 

 * final所修飾的方法:不能被重寫

 

 * final所修飾的變數:是不可以修改的,是常量

 

 *

 

 * 常量:

 

 * 字面值常量:1,2,3

 

 * 自訂常量:被final所修飾的成員變數,一旦初始化則不可改變

 

 *

 

 * 注意:自訂常量必須初始化,可以選擇顯示初始化或者構造初始化

 

 

物件導向-介面與多態

聯繫我們

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