java系列6:多態(tài)(Polymorphism)

解決了程序的擴展問題。

一、方法覆蓋(方法重寫)

1、方法覆蓋(方法重寫)

在類的繼承體系結構中,如果子類中出現(xiàn)了與父類中有同原型的方法,那么認為子類中的方法覆蓋了父類中的方法(也稱為方法重寫);

通過子類的實例調用被覆蓋的方法時,將總是調用子類中的方法,而父類中的方法將被隱藏。

舉例

2、方法覆蓋(方法重寫)和方法重載的區(qū)別

  • 方法覆蓋出現(xiàn)的前提條件之一是必須有繼承發(fā)生的情況下,而且要求父類和子類中的方法必須同原型;
  • 方法重載時,繼承并不是必需的,它只要求方法名稱相同,而參數(shù)列表則必須不同,換言之,各方法的原型其實是不同的。
方法重載
方法覆蓋/重寫
方法重載
方法重寫

二、引用轉型

基類的引用可以指向派生類的對象,如:

BaseClass obj = new DerivedClass();

但是派生類的引用則不可以指向基類的對象,如:

DerivedClass obj = new BaseClass();
這樣的語句將引發(fā)錯誤。
示例

三、多態(tài)

同一個對象,使用方法體現(xiàn)出不同的結果。
同一個實現(xiàn)接口,使用不同的實例而執(zhí)行不同操作。

父類的引用指向哪個類的實例就調用哪個類中的方法;
同樣是使用父類的引用,調用同一個名稱的方法,卻可以得到不同的調用結果,這就是Java中的多態(tài),即:同一函數(shù),多種形態(tài)。

1、靜態(tài)多態(tài)(方法重載)

  • 靜態(tài)多態(tài)也稱為編譯時多態(tài),即在編譯時決定調用哪個方法;
  • 靜態(tài)多態(tài)一般是指方法重載;
    只要構成了方法重載,就可以認為形成了靜態(tài)多態(tài)的條件;
  • 靜態(tài)多態(tài)與是否發(fā)生繼承沒有必然聯(lián)系。

2、動態(tài)多態(tài)(方法重寫)

  • 動態(tài)多態(tài)也稱為運行時多態(tài),即在運行時才能確定調用哪個方法;
  • 形成動態(tài)多態(tài)必須具備以下條件:
    1.必須要有繼承的情況存在;
    2.在繼承中必須要有方法覆蓋;
    3.必須由基類的引用指向派生類的實例,并且通過基類的引用調用被覆蓋的方法;

由上述條件可以看出,繼承是實現(xiàn)動態(tài)多態(tài)的首要前提。

3、抽象類和接口


四、final關鍵字

final:最終的,不可修改的。

final修飾變量、方法和類

1、final修飾變量

如果將某個變量修飾為final,那么該變量就成為常量,常量在聲明時必須初始化。
一般語法:

[訪問權限] final 數(shù)據(jù)類型 常量名 = 值;

final double PI = 3.14159;
PI成為常量,其后任何試圖對PI進行賦值的語句都將報錯;

2、final修飾方法

如果將某個成員方法修飾為final,則意味著該方法不能被子類覆蓋。如果在派生類中出現(xiàn)同原型的方法,將會報錯。
一般語法:

[訪問權限] final 返回值類型 方法名(參數(shù)列表) {
    ……
}

public final void fun() {
    ……
}

3、final修飾類

如果將某個類修飾為final,則說明該類無法被繼承,任何類想繼承于該類都將報錯。
一般語法:

[訪問權限] final class 類名 {
    成員列表
}

public final class MyClass {
    ……
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,753評論 18 399
  • 本文出自 Eddy Wiki ,轉載請注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 1,275評論 0 5
  • 一:java概述:1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,817評論 0 11
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,265評論 0 62
  • 1、.java源文件: 一個以”.java“為后綴的源文件:只能有一個與文件名相同的類,可以包含其他類。 2、類方...
    Hughman閱讀 1,746評論 1 9

友情鏈接更多精彩內容