多態性是指“多種形式”
它使用不同的實例而執行不同操作
多態包括靜態多態性和動態多態性
1).靜態多態性---編譯時多態
即用相同的方法名定義不同的方法內容。編譯時根據它們的特征來進行編譯. 即:方法重載
2).動態多態性---運行時多態
一種在運行時調用重寫方法的機制。子類對象可以作為父類對象使用,這是因為子類通過繼承具備了父類的所有屬性。在程序中凡是可以使用父類對象的地方,都有可以用子類對象來代替。
Java提供了 instanceof 運算符,來判斷一個對象屬于哪個類的實例。
(重載是根據需要重寫一個方法或在其中加功能
多態是根據需要傳入不同參數構建不同的實例)
重寫:動態多態性---運行時多態
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 運行時多態,動態多態性
* 父類引用指向子類對象,實際對象為子類
* java的這種機制遵循一個原則:當超類對象引用變量引用子類對象時,
* 是被引用對象的類型而不是引用變量的類型決定了調用誰的成員方法,
* 但是這個被調用的方法必須是在超類中定義過的,也就是說被子類覆蓋的方法。
* @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(); //向上轉型,父類引用指向子類對象
fa.showInfo();
// fa.showSex(); //無法調用,父類無此方法
Son son = (Son)fa; //向下轉型
son.showSex();

fa = new Daughter();
fa.showInfo();
}
}
/**
* Son
* 男
* Daughter
*同一個引用調用了相同名稱的方法,結果卻不一樣---多態的體現
*/
它使用不同的實例而執行不同操作
多態包括靜態多態性和動態多態性
1).靜態多態性---編譯時多態
即用相同的方法名定義不同的方法內容。編譯時根據它們的特征來進行編譯. 即:方法重載
2).動態多態性---運行時多態
一種在運行時調用重寫方法的機制。子類對象可以作為父類對象使用,這是因為子類通過繼承具備了父類的所有屬性。在程序中凡是可以使用父類對象的地方,都有可以用子類對象來代替。
Java提供了 instanceof 運算符,來判斷一個對象屬于哪個類的實例。
(重載是根據需要重寫一個方法或在其中加功能
多態是根據需要傳入不同參數構建不同的實例)
重寫:動態多態性---運行時多態





























































