【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

相關文章
相關標籤/搜索