1. 程式人生 > >java多型的特性

java多型的特性

一、基本概念

        多型:繼承的基礎上實現的(繼承、重寫、父類引用指向子類物件);

二、特點

      1、 動態繫結(執行時繫結、後期繫結):執行時根據物件判斷呼叫對應的重寫的方法,也就是說編譯器在執行前是一直不知到物件的型別,直到執行時才會通過物件的型別來呼叫對應的方法;

       java中所有的所有方法,除static與final方法外,都是後期繫結;

       2、缺陷:域與靜態方法

                當父類與子類具有同名的變數(非靜態變數),且修飾都為非private型別,則不具有多型性;

                靜態的方法不具有多型性,他是隨著類載入而載入的,與物件無關;

       3、父類、子類中均有構造方法,則呼叫順序?

              (1)、呼叫基類構造器,遞迴呼叫下去(先呼叫父類然後呼叫子類);

              (2)、當一個物件被建立時,其所有的全域性變數均會被賦值,且在發生任何事物之前,將分配給物件的儲存空間轉換成二進位制的零;

       4、協變返回型別

              匯出類的被覆蓋的方法可以返回基類方法的返回型別;

       5、向上轉型、向下轉型

             向上轉型:父類的引用指向子類的物件;

                        好處:多型;

                        弊端:會丟失具體類的資訊(比如子類中若有父類中沒有的方法,則向上轉型則不能呼叫這個方法),解決辦法----------------向下轉型;

            向下轉型:父類轉換為子類,但是:前提是宣告向上轉型,否則會報錯(若有覆蓋的方法);