溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

實現Java多態的實例

發布時間:2020-05-23 11:40:20 來源:億速云 閱讀:378 作者:Leah 欄目:編程語言

今天小編就為大家帶來一篇有關Java多態實例的文章。小編覺得挺實用的,為此分享給大家做個參考。一起跟隨小編過來看看吧。

當父類型引用指向子類型對象會導致程序存在編譯階段綁定和運行階段綁定兩個不同的狀態,這種機制可以成為多態機制.
向上轉型:子類型-->父類型,又稱為自動類型轉換.
向下轉型:父類型-->子類型,又稱為強制類型轉換.

//Animal.java
package qw;
public class Animal {
    public void move()
    {
        System.out.println("動物在移動");
    }
    public void eat() {
        System.out.println("動物在吃");
    }
}

//Bird.java
package qw;
public class Bird extends Animal{
    public void fly()
    {
        System.out.println("小鳥在飛");
    }
    public void eat() {
        System.out.println("小鳥在吃東西");
    }
}

//Cat.java
package qw;
public class Cat extends Animal{

    public void move()
    {
        System.out.println("貓在移動");
    }
    public void catchMouse()
    {
        System.out.println("貓在捉老鼠");
    }
}

//Test.java
package qw;
public class Test {
    public static void main(String[] args) {
        Animal a1 = new Animal();
        a1.move();

        //向上轉型(子對象向父對象轉型),a2使用的是繼承的方法,可使用方法覆蓋父類繼承下來的方法.
        //1,編譯階段編譯器檢查a2這個引用的數據類型為Animal,由于Animal.class字節碼當中有move()方法
        //所以編譯通過了,這個階段成為靜態綁定
        //2,在程序運行階段,由于JVM堆內存真實存在的對象是Cat對象,所以一定調用的是Cat對象的move()方法,這個過程
        //稱為動態綁定
        //3.無論Cat類有沒有重寫方法,運行階段調用的一定是Cat類的move()方法,因為JVM堆內存中真實存在的對象是Cat對象.
        Animal a2 = new Cat();
        a2.move();
        a2.eat();

        //如果想訪問子對象特有的方法,需強制換成子對象,即向下轉型(父對象向子對象轉型)
        if(a2 instanceof Cat) {
            Cat a3 = (Cat)a2;
            a3.catchMouse();
        }
        else {
            Bird a3 = (Bird) a2;
            a3.fly();
        }
    }
}

運行結果:
實現Java多態的實例

以上就是實現Java多態的例子,代碼詳細清楚,如果在日常工作遇到這個問題,希望你能通過這篇文章解決問題。如果想了解更多相關內容,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女