【Java 基础篇】【第十课】多态
Java的多态使用方法和C++基本是一样的。
看代码吧。
1 public class ten 2 { 3 public static void main(String[] args) 4 { 5 Human guest = new Human(); 6 BrokenCup hisCup = new BrokenCup(); 7 8 // 虽然Human中的函数drink的参数一为Cup, 9 // 但是多态的机制决定了它调用的是继承自Cup的BrokenCup 10 guest.drink(hisCup, 10); 11 } 12 13 } 14 15 class Human 16 { 17 void drink(Cup aCup, int w) 18 { 19 aCup.drinkWater(w); 20 } 21 } 22 23 // 水杯 24 class Cup 25 { 26 private int water = 0; 27 28 public void addWater(int w) 29 { 30 this.water = this.water + w; 31 } 32 33 public void drinkWater(int w) 34 { 35 this.water = this.water - w; 36 } 37 } 38 39 // 破杯子 40 class BrokenCup extends Cup 41 { 42 // 重写了父类的方法 43 public void addWater(int w) 44 { 45 System.out.println("shit, broken cup"); 46 } 47 48 public void drinkWater(int w) 49 { 50 System.out.println("oh, no water inside"); 51 } 52 }
输出为:
oh, no water inside
总结一下:
1. Java中,所有的类都继承自Object类。Object类提供了一些方法,比如toString()。我们可以在自己的类定义中覆盖这些方法。
2. 我们可以将一个基类引用向下转型(downcast)成为衍生类的引用,但要求该基类引用所指向的对象已经是所要downcast的衍生类对象。比如可以将上面的hisCup向上转型为Cup类引用后,再向下转型成为BrokenCup类引用。