向上转型和向下转型


例如我现在有两个类,他们之间是继承的关系:

class Animal {
    void eat () {
        System.out.println("Animal eat...");
    }
}

class Dog extends Animal {

    @Override
    void eat() {
        System.out.println("Dog eat");
    }
    
    void bark() {
        System.out.println("Dog bark");
    }
    
}

通俗地讲,向上转型就是把子类的对象转化为父类的对象,如:

Animal animal = new Dog();

但是注意,向上转型后,父类只能访问与子类共有的方法,如以下代码就会出现编译错误:

animal.bark(); //出错

向下转型则需要强制类型转换:

Animal animal = new Dog();

Dog dog = (Dog) animal;

总的来说,向上转型总是安全的,向下转型则未必,可能会发生ClassCastException.


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM