嘿嘿,舉乙個比較容易理解的例子。
主人公:李啟銘、李剛
經典語錄:我爸是李剛
例子開始:
從李啟銘說的那句:我爸是李剛,是很有科學依據的,用程式設計的原理看,它符合繼承和多型的物件導向程式設計的這2大特性。
先說一說,繼承,繼承就是子類可以繼承父類中的屬性和方法。包括私有的屬性和方法,只是由於私有的方法無法訪問,所以相當於沒有繼承到,其實是包含在子類中的。
public class 李剛
............
}以上就是李啟銘老爸李剛的一些屬性和方法。
public class 李啟銘 extends 李剛
} 但是青出於藍而勝於藍啊,李啟銘還有他自己的一些特性,這些東西是李剛所不具有的,像二啊、敢開車撞人啊,他老爸是無論如何也幹不出來的。
這也就是子類可以看做父類,但是也不完全相同,因為子類可能有父類不具有的屬性和方法,也就是兒子可能幹出父親幹不出來的事(也就是子類中特有的方法)。
好了,繼承也就差不多了,來看看多型吧。
我們還是用這個例子。
多型:就是父類引用可以持有子類物件,目的是為了更加通用的程式設計。
還是上面那兩個類:李啟銘和李剛
現在我們要把這兩個東西例項化了。(挺可怕的!)
先分別例項化:
李剛 aa = new 李剛();
這樣我們就可以用李剛的一些屬性了。
李啟銘 bb = new 李啟銘();
我們同樣可以用李啟銘中的一些方法了。
但是,李啟銘就是乙個官二代,如果沒有李剛就什麼都不是了。所以在很多時候李啟銘就是他老爸李剛的形象,見李啟銘如見李剛。
李剛 cc = new 李啟銘();
嘿嘿,這也就當我們看到李啟銘的時候,其實我們懼怕的不是李啟銘這小癟三,而是他的老爸李剛,所以我們其實就把李啟銘當做了李剛。
但是李啟銘和李剛還是有區別的啊,李啟銘比李剛二,敢撞人,這可是他老爸幹部出來的。
所以當我們這樣的時候 李剛 cc = new 李啟銘();
這個cc物件只能呼叫父類(李剛)中的方法,因為我們把它看做了父類。
如果我們想知道李啟銘有多二,或是想看看他是怎麼敢撞人的,我們就需要強制轉換cc為 李啟銘類。來訪問那些方法。
來總結一下:
繼承,子類繼承父類中所以的屬性和方法,但是對於private的屬相和方法,由於這個是父類的隱私,所以子類雖然是繼承了,但是沒有可以訪問這些屬性和方法的引用,所以相當於沒有繼承到。很多時候,可以理解為,沒有繼承。
多型:就是父類引用可以持有子類物件。這時候只能呼叫父類中的方法,而子類中特有方法是無法訪問的,因為這個時候(編譯時)你把他看作父類物件的原因,但是到了執行的時候,編譯器就會發現這個父類引用中原來是乙個子類的對像,所以如果父類和子類中有相同的方法時,呼叫的會是子類中的方法,而不是父類的。
可以這麼說:編譯時看父類,執行時看子類。
java中繼承和多型的區別
嘿嘿,舉乙個比較容易理解的例子。主人公 李啟銘 李剛 經典語錄 我爸是李剛 例子開始 從李啟銘說的那句 我爸是李剛,是很有科學依據的,用程式設計的原理看,它符合繼承和多型的物件導向程式設計的這2大特性。先說一說,繼承,繼承就是子類可以繼承父類中的屬性和方法。包括私有的屬性和方法,只是由於私有的方法無...
java中繼承和多型的區別
嘿嘿,舉乙個比較容易理解的例子。主人公 李啟銘 李剛 經典語錄 我爸是李剛 例子開始 從李啟銘說的那句 我爸是李剛,是很有科學依據的,用程式設計的原理看,它符合繼承和多型的物件導向程式設計的這2大特性。先說一說,繼承,繼承就是子類可以繼承父類中的屬性和方法。包括私有的屬性和方法,只是由於私有的方法無...
c 中繼承 多型
有了繼承,指向基類型別的指標或引用就可以被用來指向派生類型別的物件。然後就可以編寫程式來操縱這些指標或引用而不用考慮它們所指向的物件的實際型別。用乙個基類指標或引用來操縱多個派生型別的能力被稱為多型性。在c 中,多型性分為兩種,一種稱為編譯時多型,另一種為執行時多型 分別解釋下 1.編譯時多型,也就...