運行時多態的三原則:(應用時爲覆蓋)

 

 

一、    對象不變;(改變的是主觀認識)對象

二、          對於對象的調用只能限於編譯時類型的方法,如調用運行時類型方法報錯。get

在上面的例子中:Animal a=new Dog();對象a的編譯時類型爲Animal,運行時類型爲dog。編譯

注意:編譯時類型必定要爲運行時類型的父類(或者同類型)。變量

對於語句:Dog d=(Dog)a。將d強制聲明爲a類型,此時d爲Dog(),此時d就能夠調用運行時類型。注意:a和d指向同一對象。程序

三、          在程序的運行時,動態類型斷定。運行時調用運行時類型,即它調用覆蓋後的方法。方法

 

關係運算符:instanceofim

a  instanceof Animal;(這個式子的結果是一個布爾表達式)static

a爲對象變量,Animal是類名。類型轉換

上面語句是斷定a是否能夠貼Animal標籤。若是能夠貼則返回true,不然返回false標籤

在上面的題目中: a instanceof Animal返回 True

                 a instanceof Dog也返回 True

instanceof用於斷定是否將前面的對象變量賦值後邊的類名。

Instanceof通常用於在強制類型轉換以前斷定變量是否能夠強制轉換。

 

若是Animal a=new Animal()

Dog d=Dog()a;

此時編譯無誤,但運行則會報錯。

 

Animal a=new Dog()至關於下面語句的功能:

Animal a=getAnimal()

Public static Animal.getAnimal;

Return new Dog()

相關文章
相關標籤/搜索