理解的要點:多態意味着父親的變量可以指向子類對象
面向對象程序設計的三大支柱是封裝、繼承和多態
封裝對外把相應的屬性和方法實現的細節進行了隱藏。繼承關系使一個子類繼承父親的特征,並且加上了一些新的特征。子類是它的父親的特殊化,
每一個子類的實例都是其父親的實例,但是反過來就不成立。例如:每個圓都是一個幾何對象,但並非每一個幾何對象都是圓。因此,總可以將子類
的實例傳給需要父親型的參數。考慮如下的代碼。
class Person{
String name = "John";
public void 談生意(){
System.out.println("談生意");
}
}
class SuperMan extends Person{
String name = "superMan";
public void 談生意(){
System.out.println("談幾個億的大單子");
}
public void fly(){
System.out.println("超人飛出去救人");
}
}
public class Demo1{
public static void main(String [] args){
Person p = new SuperMan(); //父親引用指向子類對象 父類引用指向子類對象就是向上轉型
System.out.println(p.name);
p.談生意();
SuperMan sm = (SuperMan)p; //向下轉型
}
}
綜上分析:使用父類對象的地方都可以使用子類對象。這就是通常所說的多態(polymorphism),它源於希臘文字,意思是“多種形式”)。簡單來說,對態
意味着父親型變量可以引用子類型的對象。