色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

多態分為哪兩中

錢艷冰2年前21瀏覽0評論

多態分為哪兩中?

在JAVA中有兩種多態是指:運行時多態和編譯時多態。

關于類的多態性簡介如下:

多態(polymorphism)意為一個名字可具有多種語義.在程序設計語言中,多態性是指”一種定義,多種實現”.例如,運算符+有多種含義,究竟執行哪種運算取決于參加運算的操作數類型:

1+2 //加法運算符

“1” + “2” //字符串連接運算,操作數是字符串

多態性是面向對象的核心特征之一,類的多態性提供類中成員設計的靈活性和方法執行的多樣性.

1、類多態性表現

(1)方法重載

重載表現為同一個類中方法的多態性.一個類生命多個重載方法就是為一種功能提供多種實現.編譯時,根據方法實際參數的數據類型\個數和次序,決定究竟應該執行重載方法中的哪一個.

(2)子類重定義從父類繼承來的成員

當子類從父類繼承來的成員不適合子類時,子類不能刪除它們,但可以重定義它們,使弗雷成員適應子類的新需求.子類重定義父類成員,同名成員在父類與子類之間表現出多態性,父類對象引用父類成員,子類對象引用子類成員,不會產生沖突和混亂.

子類可重定義父類的同名成員變量,稱子類隱藏父類成員變量.子類也可以重定義父類的同名成員方法,當子類方法的參數列表與父類方法參數列表完全相同時,稱為子類方法覆蓋(override)父類方法。覆蓋父類方法時,子類方法的訪問權限不能小于父類方法的權限。

由于Object類的equals()方法比較兩個對象的引用是否相等而不是值是否相等,因此一個類要覆蓋Object類的equals()方法,提供本類兩個對象比較相等方法.

覆蓋表現為父類與子類之間方法的多態性.java 尋找執行方法的原則是:從對象所屬的類開始,尋找匹配的方法執行,如果當前類中沒有匹配的方法,則逐層向上依次在父類或祖先類中尋找匹配方法,直到Object類.

2、super 引用

在子類的成員方法中,可以使用代詞super引用父類成員.super引用的語法如下:

super([參數列表]) //在子類的構造方法體中,調用父類的構造方法

super.成員變量 //當子類隱藏父類成員變量時,引用父類同名成員變量

super.成員方法([參數列表]) //當子類覆蓋父類成員方法時,調用父類同名成員方法

*注意:super引用沒有單獨使用的語法

3、多態性有兩種:

1)編譯時多態性

對于多個同名方法,如果在編譯時能夠確定執行同名方法中的哪一個,則稱為編譯時多態性.

2)運行時多態性

如果在編譯時不能確定,只能在運行時才能確定執行多個同名方法中的哪一個,則稱為運行時多態性.

方法覆蓋表現出兩種多態性,當對象獲得本類實例時,為編譯時多態性,否則為運行時多態性,例如:

XXXX x1 = new XXXX(參數列表); //對象獲得本類實例,對象與其引用的實例類型一致

XXX xx1 = new XXX(參數列表);

x1.toString(); //編譯時多態性,執行XXX類的方法.

xx1.toString(); //編譯時多態性,執行XXXX類覆蓋的方法.

XXXX為XXX的父類.

由于子類對象既是父類對象,父類對象與子類對象之間具有賦值相容性,父類對象能夠被賦值為子類對象.例如,

XXXX x2 = new XXX(參數列表); //父類對象獲得子類實例,子類對象即是父類對象

x2.toString(); //運行時多態

x2聲明為父類對象卻獲得子類XXX的實例,那么x2.toString()究竟執行父類方法還是執行子類覆蓋的方法呢?

這分為兩種情況:

取決于子類是否覆蓋父類方法.如果子類覆蓋父類方法,則執行子類方法;

如果沒有覆蓋,則執行父類方法.

在編譯時,僅僅依據對象所屬的類,系統無法確定到底應該執行那個類的方法,只有運行時才能確定,因此這是運行時多態.

父類對象并不能執行所有的子類方法,只能執行那些父類中聲明\子類覆蓋的子類方法.

java中super的作用,多態分為哪兩中