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

Java的多态使用方法和C++基本是同样的。java

看代码吧。ide

public class ten
{
    public static void main(String[] args)
    {
        Human guest = new Human();
        BrokenCup hisCup = new BrokenCup();

        // 虽然Human中的函数drink的参数一为Cup,
        // 可是多态的机制决定了它调用的是继承自Cup的BrokenCup
        guest.drink(hisCup, 10);
    }

}

class Human
{
    void drink(Cup aCup, int w)
    {
        aCup.drinkWater(w);
    }
}

// 水杯
class Cup
{
    private int water = 0;

    public void addWater(int w)
    {
        this.water = this.water + w;
    }

    public void drinkWater(int w)
    {
        this.water = this.water - w;
    }
}

// 破杯子
class BrokenCup extends Cup
{
    // 重写了父类的方法
    public void addWater(int w)
    {
        System.out.println("shit, broken cup");
    }

    public void drinkWater(int w)
    {
        System.out.println("oh, no water inside");
    }
}

输出为:函数

oh, no water inside

总结一下:this

1. Java中,全部的类都继承自Object类。Object类提供了一些方法,好比toString()。咱们能够在本身的类定义中覆盖这些方法。spa

2. 咱们能够将一个基类引用向下转型(downcast)成为衍生类的引用,但要求该基类引用所指向的对象已是所要downcast的衍生类对象。好比能够将上面的hisCup向上转型为Cup类引用后,再向下转型成为BrokenCup类引用。orm

相关文章
相关标签/搜索