一、多态的定义
同一事物,在不同时刻体现出不同状态。
例如:水在不同状态可能是:气态、液态、固态。
二、多态前提和体现
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 @Override 17 public String getName() { 18 // TODO Auto-generated method stub 19 return "BENZ"; 20 } 21 22 @Override 23 public int getPrice() { 24 // TODO Auto-generated method stub 25 return 300000; 26 } 27 28 } 29 30 class Bmw implements Car { 31 32 @Override 33 public String getName() { 34 // TODO Auto-generated method stub 35 return "BMW"; 36 } 37 38 @Override 39 public int getPrice() { 40 // TODO Auto-generated method stub 41 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 运行结果: 68 品牌:BENZ,价格:300000 69 品牌:BMW,价格:250000