java之對象轉型2

public class TestCasting2{
    public static void main(String args[]){
        TestCasting2 test2= new TestCasting2();
        
    
        Animal a = new Animal("animalName");
        Dog d = new Dog("dogName","dogColor");
        Cat c = new Cat("catName","catColor");
        
        test2.f(a);    test2.f(d);     test2.f(c);    
    }
    public void f(Animal a){        //父類引用型參數,達到了面向對象苦苦追求的可複用性,多種類型的對象,共同使用一個方法
        System.out.println(a.name);
        
        if(a instanceof Dog){
            Dog d2 = (Dog)a;        //強制轉換,而後就能夠使用子類當中的屬性了
            System.out.println(d2.folorColor);
        }else if(a instanceof Cat){
            Cat c2 = (Cat)a;
            System.out.println(c2.eyesColor);
        }                            //這裏有過還有一個鳥對象,只須要加一個if判斷語句就ok了,不須要重寫一個方法public void f2(Bird bird){}
    }
}

class Animal{
    public String name;
    public Animal(String name){
        this.name = name;
    }
}
class Dog extends Animal{
    public String folorColor;
    public Dog(String name,String folorColor){
        super(name);
        this.folorColor = folorColor;
    }
}
class Cat extends Animal{
    public String eyesColor;
    public Cat(String name,String eyesColor){
        super(name);
        this.eyesColor = eyesColor;
    }
}

程序運行結果:this

總結:spa

這邊文章的基本記錄就是:咱們建立一個方法,方法的參數是父類的引用。而咱們實際當中傳的是子類的對象,這樣咱們就能夠多個對象同時使用這一個方法了。而後咱們在方法中經過強制類型轉換,調用各個對象的各個屬性。code

經過這種對象的向上轉型方法能夠使咱們的代碼可複用性提升一些,但並非可複用性達到了最好,詳情見下一遍文章。對象

經過對象轉型,達到了面向對象的可複用性。就比如:我要蓋好一座大樓,而後要在大樓邊上加一個廚房,咱們只需直接蓋廚房就行了。而不是將樓房的主題建築拆掉,而後從新蓋一次樓房。blog

相關文章
相關標籤/搜索