java之多態(Polymorphic)、動態綁定(Dynamic Binding)、遲綁定(Late Binding)


今天,我們來說說java面向對象最核心的東西,多態。通過多態可以使我們的程序可復用性達到極致,這就是我們為什么要學多態的原因。

“多態”(Polymorphic)也叫“動態綁定”(Dynamic Binding)同時也叫“遲綁定”(Late Binding)。

動態綁定是指“在執行期間(而非編譯期間)判斷所引用對象的實際類型,根據其實際類型調用其相應的方法。”

程序代碼:

public class TestPolymorphic{
    public static void main(String args[]){
    
        Animal animal = new Animal("animal");
        Cat cat = new Cat("cat","blue");
        Dog dog = new Dog("dog","black");
        
        Lily l1 = new Lily("l1",animal);
        Lily l2 = new Lily("l1",dog);
        
        l1.myAnimalEnjoy();
        l2.myAnimalEnjoy();
    }
}
class Lily{
    private String name;
    private Animal animal;
    public Lily(String name, Animal animal){
        this.name = name;
        this.animal = animal;
    }
    public void myAnimalEnjoy(){
        animal.enjoy();
    }
}
class Animal{
    private String name;
    public Animal(String name){
        this.name = name;
    }
    public void enjoy(){
        System.out.println("叫聲~~~");
    }
}
class Dog extends Animal{
    
    private String forlorColor;
    public Dog(String name,String forlorColor){
        super(name);
        this.forlorColor = forlorColor;
    }
    public void enjoy(){
        System.out.println("dog叫聲~~~");
    }
}
class Cat extends Animal{
    
    private String eyesColor;
    public Cat(String name,String eyesColor){
        super(name);
        this.eyesColor = eyesColor;
    }
    public void enjoy(){
        System.out.println("cat叫聲~~~");
    }
}

程序運行結果:

總結:通過以上示例,我們發現多態必備的三個條件1、有繼承2、有重寫3、父類引用指向子類對象


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM