多態(tài)總結(jié)
Posted on 2009-08-23 22:42 Gavin.lee 閱讀(244) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): java SE & EE多態(tài)性是指“多種形式”
它使用不同的實(shí)例而執(zhí)行不同操作
多態(tài)包括靜態(tài)多態(tài)性和動(dòng)態(tài)多態(tài)性
1).靜態(tài)多態(tài)性---編譯時(shí)多態(tài)
即用相同的方法名定義不同的方法內(nèi)容。編譯時(shí)根據(jù)它們的特征來(lái)進(jìn)行編譯. 即:方法重載
2).動(dòng)態(tài)多態(tài)性---運(yùn)行時(shí)多態(tài)
一種在運(yùn)行時(shí)調(diào)用重寫(xiě)方法的機(jī)制。子類(lèi)對(duì)象可以作為父類(lèi)對(duì)象使用,這是因?yàn)樽宇?lèi)通過(guò)繼承具備了父類(lèi)的所有屬性。在程序中凡是可以使用父類(lèi)對(duì)象的地方,都有可以用子類(lèi)對(duì)象來(lái)代替。
Java提供了 instanceof 運(yùn)算符,來(lái)判斷一個(gè)對(duì)象屬于哪個(gè)類(lèi)的實(shí)例。
(重載是根據(jù)需要重寫(xiě)一個(gè)方法或在其中加功能
多態(tài)是根據(jù)需要傳入不同參數(shù)構(gòu)建不同的實(shí)例)
重寫(xiě):動(dòng)態(tài)多態(tài)性---運(yùn)行時(shí)多態(tài)
package com.yixun.wap;

class Father {
protected void showInfo() {
System.out.println("Father");
}
}

class Son extends Father {
protected void showInfo() {
System.out.println("Son");
}

protected void showSex() {
System.out.println("男");
}
}

class Daughter extends Father {
protected void showInfo() {
System.out.println("Daughter");
}

protected void showSex() {
System.out.println("女");
}
}
/**
* ******************************************
* @descripte 運(yùn)行時(shí)多態(tài),動(dòng)態(tài)多態(tài)性
* 父類(lèi)引用指向子類(lèi)對(duì)象,實(shí)際對(duì)象為子類(lèi)
* java的這種機(jī)制遵循一個(gè)原則:當(dāng)超類(lèi)對(duì)象引用變量引用子類(lèi)對(duì)象時(shí),
* 是被引用對(duì)象的類(lèi)型而不是引用變量的類(lèi)型決定了調(diào)用誰(shuí)的成員方法,
* 但是這個(gè)被調(diào)用的方法必須是在超類(lèi)中定義過(guò)的,也就是說(shuō)被子類(lèi)覆蓋的方法。
* @author Gavin.lee
* @date 2009-8-24下午05:21:49
* @version 1.0
*
********************************************
*/
public class TestSon {
public static void main(String args[]) {
Father fa;
fa = new Son(); //向上轉(zhuǎn)型,父類(lèi)引用指向子類(lèi)對(duì)象
fa.showInfo();
// fa.showSex(); //無(wú)法調(diào)用,父類(lèi)無(wú)此方法
Son son = (Son)fa; //向下轉(zhuǎn)型
son.showSex();

fa = new Daughter();
fa.showInfo();
}
}
/**
* Son
* 男
* Daughter
*同一個(gè)引用調(diào)用了相同名稱(chēng)的方法,結(jié)果卻不一樣---多態(tài)的體現(xiàn)
*/
它使用不同的實(shí)例而執(zhí)行不同操作
多態(tài)包括靜態(tài)多態(tài)性和動(dòng)態(tài)多態(tài)性
1).靜態(tài)多態(tài)性---編譯時(shí)多態(tài)
即用相同的方法名定義不同的方法內(nèi)容。編譯時(shí)根據(jù)它們的特征來(lái)進(jìn)行編譯. 即:方法重載
2).動(dòng)態(tài)多態(tài)性---運(yùn)行時(shí)多態(tài)
一種在運(yùn)行時(shí)調(diào)用重寫(xiě)方法的機(jī)制。子類(lèi)對(duì)象可以作為父類(lèi)對(duì)象使用,這是因?yàn)樽宇?lèi)通過(guò)繼承具備了父類(lèi)的所有屬性。在程序中凡是可以使用父類(lèi)對(duì)象的地方,都有可以用子類(lèi)對(duì)象來(lái)代替。
Java提供了 instanceof 運(yùn)算符,來(lái)判斷一個(gè)對(duì)象屬于哪個(gè)類(lèi)的實(shí)例。
(重載是根據(jù)需要重寫(xiě)一個(gè)方法或在其中加功能
多態(tài)是根據(jù)需要傳入不同參數(shù)構(gòu)建不同的實(shí)例)
重寫(xiě):動(dòng)態(tài)多態(tài)性---運(yùn)行時(shí)多態(tài)





























































