我把am=new Dog(); am.roar();改為Dog dog=new Dog(); dog.roar();這實現的功能不是一樣嗎?給你個例子吧!。。好好體會體會。假設有一個類 叫 鳥類,它擁有屬性翅膀,擁有方法鳴叫,如下public class Bird{ PRivate Wing wing; public void moo(){ System.out.println("鳥叫聲"); }}鳥類封裝了 翅膀類和moo方法;另外有兩個類都繼承鳥類并重寫了moo方法,分別是鸚鵡和麻雀如下:鸚鵡類:public class Parrot extends Bird{ public void moo(){ System.out.println("鸚鵡的叫聲"); }}麻雀類:public class Sparrow extends Bird{ public void moo(){ System.out.println("麻雀的叫聲"); }}方法重寫應該懂吧,不懂自己找書看吧;然后你有個妻子她想聽鳥叫,就有個妻子類public class Wife{ public void listen(Bird bird){ bird.moo(); } /*這時多態就很好的體現了,你妻子想聽鳥叫,無論什么鳥都可以給她,但是你想讓她和鸚鵡 *說話,你就買了一只鸚鵡傳給listen方法,結果你妻子聽到了鸚鵡的叫聲,程序輸出:鸚 *鵡的叫聲 */ public static void main(String[] args) { new Wife().listen(new Parrot()); }}多態實現了動態綁定,讓程序有了很好的擴展性,比如你以后想買一只燕子送給你妻子,就只需要寫個燕子類Swallow繼承Bird方法就可以了,而不需要再在妻子類里添加一個方法listen(Swallow swallow)……上面編碼沒用編譯器,可能有錯誤,請諒解
新聞熱點
疑難解答