java之對象轉型

對象轉型(casting)this

一、一個基類的引用類型變量能夠「指向」其子類的對象。spa

二、一個基類的引用不能夠訪問其子類對象新增長的成員(屬性和方法)。code

三、能夠使用 引用變量 instanceof 類名 來判斷該引用型變量所「指向」的對象是否屬於該類或該類的子類。對象

四、子類的對象能夠當作基類的對象來使用稱做向上轉型(upcasting),反之成爲向下轉型(downcasting)。blog

 

 
 
public class TestCasting{
    public static void main(String args[]){
        Animal a = new Animal("a");
        Cat c = new Cat("c","cEyesColor");
        Dog d = new Dog("d","dForlorColor");
        
        System.out.println(a instanceof Animal);    //true
        System.out.println(c instanceof Animal);    //true
        System.out.println(d instanceof Animal);    //true
        System.out.println(a instanceof Dog);        //false
        
        a = new Dog("d2","d2ForlorColor");        //父類引用指向子類對象,向上轉型
        System.out.println(a.name);                //能夠訪問
        //System.out.println(a.folorColor);   //!error   不能夠訪問超出Animal自身的任何屬性
        System.out.println(a instanceof Animal);    //是一隻動物
        System.out.println(a instanceof Dog);        //是一隻狗,可是不能訪問狗裏面的屬性
        
        Dog d2 = (Dog)a;    //強制轉換
        System.out.println(d2.folorColor);    //將a強制轉換以後,就能夠訪問狗裏面的屬性了
    }
}
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;
    }
}
 
 

 

 

運行結果:ast

相關文章
相關標籤/搜索