首页 > 代码库 > 【Java 基础篇】【第十课】多态

【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的BrokenCup10         guest.drink(hisCup, 10);11     }12 13 }14 15 class Human16 {17     void drink(Cup aCup, int w)18     {19         aCup.drinkWater(w);20     }21 }22 23 // 水杯24 class Cup25 {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 Cup41 {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类引用。

【Java 基础篇】【第十课】多态