java之对象转型

对象转型(casting)

1、一个基类的引用类型变量可以“指向”其子类的对象。

2、一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。

3、可以使用 引用变量 instanceof 类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。

4、子类的对象可以当做基类的对象来使用称作向上转型(upcasting),反之成为向下转型(downcasting)。

 

public class TestCasting{
    public static void main(String args[]){
        Animal animal = new Animal("name");
        Cat cat = new Cat("catName","blueColor");
        Dog dog = new Dog("dogName","yellowColor");
        
        System.out.println(animal instanceof Animal);
        System.out.println(cat instanceof Animal);
        System.out.println(dog instanceof Animal);
        //System.out.println(animal instanceof cat);   //error
        
        animal = new Dog("dogAnimal","dogColor");
        System.out.println(animal.name);
        //System.out.println(animal.forColor);  //error
        System.out.println(animal instanceof Animal);
        System.out.println(animal instanceof Dog);
        Dog d1 = (Dog)animal;
        System.out.println(d1.forColor); 
    }
}
class Animal{
    public String name;
    public Animal(String name){     
        this.name = name;
    }
}
class Cat extends Animal{
    public String eyeColor;
    public Cat(String name, String eyeColor){
        super(name);
        this.eyeColor = eyeColor;
    }
}

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

运行结果:

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。