若是編譯時類型和運行時類型不一致,會出現所謂的多態。由於子類實際上是一種特殊的父類,所以java容許把一個子類對象直接賦值給一個父類引用變量,無須任何類型轉換,或者被稱爲向上轉型,由系統自動完成。java
如 :code
Father f = new Son();
Son是Father的子類,引用變量f就會出現編譯時類型和運行時類型不一致的狀況,編譯時是Father
類型的,運行時是Son
類型。當變量的編譯時類型和運行時類型不一致時,經過變量訪問它所引用的對象的實例時,該實例變量的值由聲明該變量的類型
決定。經過變量訪問它所引用的對象的方法時,該方法的行爲由所引用的對象實際類型
所決定。對象
static成員變量
、成員變量
、static方法
使用的是Father中的類型方法
使用的是Son中的類型