java多態(tài)簡(jiǎn)單例子 java使用繼承思想實(shí)現(xiàn)汽車?yán)樱?/h1>
java使用繼承思想實(shí)現(xiàn)汽車?yán)??加法、減法、乘法和除法都非常簡(jiǎn)單。對(duì)數(shù)需要使用Java計(jì)算類math。例如public static int add(int a,int b){return a,b}
java使用繼承思想實(shí)現(xiàn)汽車?yán)樱?/h2>
加法、減法、乘法和除法都非常簡(jiǎn)單。對(duì)數(shù)需要使用Java計(jì)算類math。例如public static int add(int a,int b){return a,b}public static double add(double a,double b){return a,b}public static string add(string a,string b){return a,b}如果調(diào)用同一個(gè)方法,如果參數(shù)的類型不同,那么返回的結(jié)果也會(huì)不同,反映了面向?qū)ο蠖鄳B(tài)性的特點(diǎn)。這里使用的多態(tài)性重載
1。Java只能用接口實(shí)現(xiàn)多個(gè)實(shí)現(xiàn),類似于多重繼承
2。在Java中實(shí)現(xiàn)多重繼承的唯一方法是在接口之間。
讓我們從繼承開(kāi)始,例如
class fu1
{
void show(){}]}
]class fu2
{
void show(){}]}
class Zi extensions fu1,fu2
{
void show(){}]}
]創(chuàng)建Zi引用以調(diào)用show方法時(shí),Java虛擬機(jī)不知道要調(diào)用父類的哪個(gè)show方法
]類fu1
{
void show()]}
]類fu2
{
]void show()]}
]類Zi擴(kuò)展fu1,fu2
{
void show(){}
}
fu1和F2的show方法是抽象的,沒(méi)有方法體
所以只有子類的show方法都有方法體,所以接口可以實(shí)現(xiàn)的更多,也就是變量的多重繼承
所以可以推斷接口可以繼承的更多,甚至接口a B和C的父接口都有相同的show()方法
但是它們都是抽象方法。A繼承了它們,它們也是抽象的。這個(gè)不能繼承嗎?從實(shí)現(xiàn)示例可以推斷接口可以繼承多個(gè)。
java語(yǔ)言可以通過(guò)什么實(shí)現(xiàn)多繼承?
例如,如果父類的構(gòu)造函數(shù)帶參數(shù),則子類的構(gòu)造函數(shù)中的第一句話是super(…)。注意:調(diào)用子類構(gòu)造函數(shù)時(shí),首先調(diào)用父類構(gòu)造函數(shù),然后調(diào)用子類構(gòu)造函數(shù)。如果要調(diào)用父類而不是子類的成員,可以:super。不創(chuàng)建父類的實(shí)例。如果你能創(chuàng)建一個(gè)父類的實(shí)例,我可以舉一個(gè)反例來(lái)說(shuō)明這是錯(cuò)誤的:當(dāng)父類是抽象類而子類不是抽象類時(shí),子類在調(diào)用構(gòu)造函數(shù)時(shí)也會(huì)調(diào)用父類構(gòu)造函數(shù),創(chuàng)建子類和父類的兩個(gè)實(shí)例。但是,抽象類不能實(shí)例化。原來(lái)的假設(shè)是錯(cuò)誤的。因此,父類不會(huì)被創(chuàng)建為實(shí)例。理論理解:當(dāng)用構(gòu)造函數(shù)添加new時(shí),會(huì)創(chuàng)建一個(gè)對(duì)象(實(shí)例)。調(diào)用子類構(gòu)造函數(shù)時(shí),調(diào)用父類構(gòu)造函數(shù)是初始化子類從父類繼承的部分。此過(guò)程不對(duì)父類使用new,因此不會(huì)為父類創(chuàng)建對(duì)象(實(shí)例)。