JAVA多型的體現

2021-06-28 16:20:31 字數 1212 閱讀 7489

多型是通過:

1 介面 和 實現介面並覆蓋介面中同一方法的幾不同的類體現的 

2 父類 和 繼承父類並覆蓋父類中同一方法的幾個不同子類實現的.

多型有兩種表現形式:方法的過載和類的重寫(覆寫)

首先說過載(overload),是發生在同一類中。與什麼父類子類、繼承毫無關係。    

標識乙個函式除了函式名外,還有函式的引數(個數和型別)。也就是說,乙個類中可以有兩個或更多的函式,叫同乙個名字而他們的引數不同。    

他們之間毫無關係,是不同的函式,只是可能他們的功能類似,所以才命名一樣,增加可讀性,僅此而已!  

再說重寫/覆蓋(override),是發生在子類中!也就是說必須有繼承的情況下才有覆蓋發生(動態繫結)。

我們知道繼承乙個類,也就有了父類了全部方法,如果你感到哪個方法不爽,功能要變,那就把那個函式在子類中重新實現一遍。  

這樣再呼叫這個方法的時候,就是執行子類中的過程了。父類中的函式就被覆蓋了。(當然,覆蓋的時候函式名和引數要和父類中完全一樣,不然你的方法對父類中的方法就不起任何作用,因為兩者是兩個函式,毫不關係)

多型存在的三個必要條件

一、要有繼承;

二、要有重寫;

三、父類引用指向子類物件

多型的作用濃縮成一句話的話,應該就是降低**耦合度了。

介面的體現,在android中隨處可見的匿名內部類就有描述。

父子類的體現:

public class test 

public static class parent ;

} public static class child extends parent

} public static class childtwo extends parent

}}

main函式中列印結果為:

child

childtwo

說明通過parent子類的例項物件賦予parent類的引用。此引用通過不同的子類物件,執行其覆寫父類方法的具體實現,從而體現了類的多型性。

這種動態繫結的好處是擴充套件性很好,例如玩過網遊的話應該知道 遊戲中有不同的角色,它們都有乙個父類,它們做相同動作時表現出來的效果就會不一樣,比如跑,魔法師的跑跟戰士的跑就不會一樣,這就是倆者都覆蓋了父類中的跑方法,各自有自己的現實,表現出來多型。如果有一天你想再加個角色,只用再寫乙個類繼承該父類,覆蓋其中的跑方法就行了,其他**不用怎麼改,所以可維護性也很好。

Java多型的體現 轉型

子類的物件賦值給父類的引用 student s new student person p s 也就是person p new student 乙個引用能夠呼叫哪些成員 變數和方法 取決於這個引用的型別 即父類 乙個引用呼叫的是哪乙個方法,取決於這個引用所指的物件 即子類 將父類的物件賦值給子類的引用...

多型的應用體現

多型的應用體現例項 package bxdstudy public class duotai 這個類是使得無論基礎生還是優等生都可以呼叫方法 class dostudent 學生類 抽象的 abstract class student 基礎生繼承 class basestudent extends ...

類的多型性體現

引用多型 父類的引用可以指向本類的物件 父類的引用指向了自己的子類物件.方法多型 建立本類物件時,呼叫的方法為本類方法.建立子類物件時,呼叫的方法為子類重寫方法或繼承方法.注 不能訪問子類特有的方法 多型的前提 a.類與類之間必須有關係,要麼繼承,要麼實現 implement b.要有重寫 c.父類...