多型性是指允許不同類的物件對同一訊息作出響應。多型性包括引數化多型性和包含多型性。多型性語言具有靈活、抽象、行為共享、**共享的優勢,很好的解決了應用程式函式同名問題。多型有兩種表現形式:過載和覆蓋
首先說過載(overload),是發生在同一類中。與什麼父類子類、繼承毫無關係。標識乙個函式除了函式名外,還有函式的引數(個數和型別)。也就是說,乙個類中可以有兩個或更多的函式,叫同乙個名字而他們的引數不同。
他們之間毫無關係,是不同的函式,只是可能他們的功能類似,所以才命名一樣,增加可讀性,僅此而已!
再說覆蓋(override),是發生在子類中!也就是說必須有繼承的情況下才有覆蓋發生。
我們知道繼承乙個類,也就有了父類了全部方法,如果你感到哪個方法不爽,功能要變,那就把那個函式在子類中重新實現一遍。
這樣再呼叫這個方法的時候,就是執行子類中的過程了。父類中的函式就被覆蓋了。(當然,覆蓋的時候函式名和引數要和父類中完全一樣,不然你的方法對父類中的方法就不起任何作用,因為兩者是兩個函式,毫不關係)
對於父類中定義了乙個方法專門是為了子類來進行覆蓋,把它定義成抽象型別(abstract),子類繼承父類時必須要重寫這個方法,否則出現編譯錯誤。對於不同的子類繼承乙個父類,不同子類針對自己的情況覆寫父類中的方法,形成自己的方法。如下面這個例子:shape 類中有area變數,和getarea方法,對於不同的三個子類circle ,square ,star,求面積的方法不同,此時就要覆寫父類中的getarea方法。
//抽象類
public abstract class shape
public class circle extends shape
public double getarea()
}
最後注意一點:抽象類可以不包含抽象方法,包含抽象方法的類一定是抽象類。
多型 抽象類的理解
多型 乙個類在不同時刻表現出的具體物件 前提 有繼承關係,有方法重寫,父類引用指向子類物件 父類引用指向子類物件 相當於指定了類在當下情況下的具體物件 例如 乙個父類a有三個子類b,c,d 而 a 物件名 new b 這一句則是明確告訴編譯器,現在這個類的具體物件是b,根據b的實際變數和方法,來進行...
多型 抽象類
多型 當中體現多型性,就是父類指向子類 左父右子 格式 父類名稱 物件名 new 子類名稱 介面名稱 物件名 new 實現類名稱 使用多型,物件向上轉型,是絕對安全的,但物件一旦向上轉型父類,就不能呼叫子類原本特有的類容 物件向下轉型,就是還原的動作 格式 子類名稱 物件名 子類名稱 父類物件 含義...
Java基礎 多型和抽象類
多型 概念 一種事物多種形態 多型的前提 1.有繼承關係 2.有方法重寫 3.父類引用指向子類物件 多型的成員特點 編譯看左邊,執行看右邊 成員變數特點 編譯看左邊,執行看左邊 靜態方法 靜態方法必須重寫為靜態 型別轉換 大到小強制轉換 資料型別 變數名 目標資料型別 資料 引用資料型別 父類資料型...