向上转型:
Animal animal = new Cat(); //向上转型
animal.eat();
animal = new Dog();
animal.eat();
将子类对象转换为父类对象,父类将调用子类重写后的方法(两个方法都会运行) :一般用于抽象类或者接口,(多态的表现)
<父类名> 自己设置的变量名=new <子类名>;此处父类对象可以是接口
向上转型时,子类单独定义的方法会丢失。比如上面Dog类中定义的run方法,当animal引用指向Dog类实例时是访问不到run方法的,animal.run()会报错。
子类引用不能指向父类对象。Cat c = (Cat)new Animal()这样是不行的。(会丢失子类独有的方法,父类没有的)
多态,节省代码(接口集合)的意义
向下转型
向下转型(为了获取子类丢失的方法,在泛型应用广泛)
可以看看这篇文章:https://blog.csdn.net/xyh269/article/details/52231944
animal是向上转型的对象,也可以是接口集合其中一个元素;
Thinkpad thinkpad = (Thinkpad)shopcar.getListItem(THINKPAD);
将父类对象强制转化子类对象 Dog dog=(Dog)animal
<子类名> 自己设置的变量名=(子类名)<父类名>;
减少代码量
网友评论