這兩者有什么區(qū)別與聯(lián)系?
Phone phone1=new Nokia;與Nokia nokia=new Nokia;都可以調(diào)用call()跟send(),運行結(jié)果也一樣,那這兩者有什么區(qū)別與聯(lián)系?
Phone phone1=new Nokia;與Nokia nokia=new Nokia;都可以調(diào)用call()跟send(),運行結(jié)果也一樣,那這兩者有什么區(qū)別與聯(lián)系?
2016-01-11
舉報
2016-01-11
Phone是Nokia和Apple繼承的父類(下面只以Nokia說明)。
Phone phone1=new Nokia這種用法叫做“父類引用指向子類對象”,即聲明的是父類,實際指向的是子類的一個對象。由于Nokia是繼承自它的父類Phone,所以Phone類型的引用是可以指向Nokia類型的對象的。這就是“向上轉(zhuǎn)型”。
這種用法的優(yōu)點是使用者可以更關(guān)注父類能做什么,而不去關(guān)心子類是具體怎么做的。因為子類是對父類的一個改進和擴充,所以一般子類在功能上較父類更強大, 定義一個父類類型的引用指向一個子類的對象既可以使用子類強大的功能,又可以抽取父類的共性。你可以隨時替換一個子類,也就是隨時替換一個具體實現(xiàn),而不用修改其他。
2016-01-11
前者是把子類轉(zhuǎn)成父類,稱為向上轉(zhuǎn)型,而不能把父類轉(zhuǎn)化為子類