Java多態案例分析

來源:互聯網
上載者:User

標籤:

一、多態的定義

同一事物,在不同時刻體現出不同狀態。

例如:水在不同狀態可能是:氣態、液態、固態。

二、多態前提和體現

1、有繼承關係

2、有方法重寫

3、有父類引用指向子類對象

三、編譯運行原理

1、編譯看左邊,父類是否有此方法,沒有就報錯。

2、運行看右邊,運行結果一般是右邊子類重寫後的結果。

四、案例分析

 1 package polymorphic; 2 /** 3  * 多態案例1,基礎 4  * @author zhongfg 5  * @date 2015-06-16 6  */ 7 interface Car { 8      9     public abstract String getName();10     11     public abstract int getPrice();12 }13 14 class Benz implements Car {15 16     @Override17     public String getName() {18         // TODO Auto-generated method stub19         return "BENZ";20     }21 22     @Override23     public int getPrice() {24         // TODO Auto-generated method stub25         return 300000;26     }27 28 }29 30 class Bmw implements Car {31 32     @Override33     public String getName() {34         // TODO Auto-generated method stub35         return "BMW";36     }37 38     @Override39     public int getPrice() {40         // TODO Auto-generated method stub41         return 250000;42     }43     44 }45 46 class CarShop {47     48     public void carInfo(Car car){49         System.out.println("品牌:"+car.getName()+",價格:"+car.getPrice());50     }51 }52 53 public class PolymorphicDemo {54     public static void main(String[] args) {55         56         CarShop cs = new CarShop();57         //傳遞的是Benz的對象58         Car car = new Benz();59         cs.carInfo(car);60         61         //傳遞的是Bmw的對象62         car = new Bmw();63         cs.carInfo(car);64         65         /**66          * 運行結果:67          * 品牌:BENZ,價格:30000068          * 品牌:BMW,價格:25000069          */70     }71 }
View Code
 1 package polymorphic; 2 /** 3  * 多態案例2,轉型問題 4  * @author zhongfg 5  * @date 2015-06-16 6  */ 7 abstract class Animal { 8      9     public abstract void eat();10 }11 12 class Dog extends Animal {13     14     public void eat(){15         System.out.println("狗吃肉");16     }17     18     public void lookDoor(){19         System.out.println("狗看門");20     }21 }22 23 class Cat extends Animal {24     25     public void eat() {26         System.out.println("貓吃魚");27     }28     29     public void playGram() {30         System.out.println("貓玩遊戲");31     }32 }33 34 public class PolymorphicTest {35 36     public static void main(String[] args) {37         //記憶體中是狗,向上轉型38         Animal a = new Dog();39         a.eat();40         //向下轉型41         Dog d = (Dog)a;42         d.lookDoor();43         44         System.out.println("------------------");45         46         //記憶體中是貓,向上轉型47         a = new Cat();48         a.eat();49         //向下轉型50         Cat c = (Cat)a;51         c.playGram();52         53         //java.lang.ClassCastException,記憶體中的貓不能轉換成狗54 //        Dog d2 = (Dog)a;55         56         /**57          * 運行結果:58          * 狗吃肉59          * 狗看門60          * ------------------61          * 貓吃魚62          * 貓玩遊戲63          */64     }65 }
View Code

 

Java多態案例分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.