java反多态的代码_Java多态性代码详解
/*
多態(tài)性
1.一個(gè)事物的多種形態(tài)
2.父類(lèi)的引用指向子類(lèi)的對(duì)象
3.多態(tài)的使用:虛擬方法調(diào)用
有了對(duì)象的多態(tài)性之后,編譯期只能調(diào)用父類(lèi)中聲明的方法,但在運(yùn)行期,實(shí)際執(zhí)行的是子類(lèi)重寫(xiě)的方法
編譯看左邊,運(yùn)行看右邊
4.多態(tài)性使用前提
① 類(lèi)的繼承關(guān)系
② 方法的重寫(xiě)
5.對(duì)象的多態(tài)性,只適用于方法,不適用于屬性
面試題:多態(tài)性是編譯時(shí)行為還是運(yùn)行時(shí)行為
答案:運(yùn)行時(shí)行為,方法調(diào)用是在運(yùn)行時(shí)確定的,在編譯期無(wú)法確定
*/
public static void main(String[] args) {
Person p1 = new Person();
p1.eat();
Man m = new Man();
m.eat();
m.age = 25;
m.makeMoney();
System.out.println("*******************************");
//對(duì)象的多態(tài)性:父類(lèi)的引用指向子類(lèi)的對(duì)象
Person p2 = new Man();
// Person p3 = new Woman();
//多態(tài)的使用,當(dāng)調(diào)用子父類(lèi)同名同參數(shù)的方法時(shí),實(shí)際執(zhí)行的是子類(lèi)重寫(xiě)父類(lèi)的方法
p2.eat();
p2.walk();
//p2.makeMoney();--不能調(diào)用子類(lèi)獨(dú)有的方法
//有了對(duì)象的多態(tài)性以后,內(nèi)存中實(shí)際加載了子類(lèi)特有的屬性和方法,
//但是由于變量聲明為父類(lèi)類(lèi)型,導(dǎo)致編譯時(shí)只能調(diào)用父類(lèi)中聲明的屬性和方法。
//如何調(diào)用子類(lèi)特有的屬性和方法
//使用強(qiáng)制類(lèi)型轉(zhuǎn)換符---向下轉(zhuǎn)型
Man m1 = (Man)p2;
m1.makeMoney();
//使用強(qiáng)制轉(zhuǎn)換時(shí),可能出現(xiàn)異常--ClassCastException
// Woman w1 = (Woman) p2;
// w1.goShopping();
/*
instanceof關(guān)鍵字的使用
a instanceof A:判斷對(duì)象a是否是類(lèi)A的實(shí)例。如果是,返回true,反之返回false
如果a instanceof A返回true,a instanceof B也返回true,
則B為A的父類(lèi)
*/
//使用情景,為了避免向下轉(zhuǎn)型時(shí)出現(xiàn)異常,在轉(zhuǎn)型之前先進(jìn)行instanceof判斷
if(p2 instanceof Woman){
Woman w1 = (Woman) p2;
w1.goShopping();
System.out.println("*****woman******");
}
if(p2 instanceof Man){
Man m2 = (Man) p2;
m2.makeMoney();
System.out.println("*****man******");
}
//問(wèn)題一:編譯時(shí)通過(guò),運(yùn)行時(shí)不通過(guò)
// Woman w1 = (Woman) p2;
// w1.goShopping();
// Person p3 = new Person();
// Man m3 = (Man)p3;
//問(wèn)題二:編譯時(shí)通過(guò),運(yùn)行時(shí)也通過(guò)
Object obj = new Woman();
Person p = (Person)obj;
p.walk();
//問(wèn)題三:編譯時(shí)不通過(guò)
// Man m4 = new Woman();
}
總結(jié)
以上是生活随笔為你收集整理的java反多态的代码_Java多态性代码详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 天津泰达航母主题公园怎么走最省时间
- 下一篇: python中paste函数的作用_PI