一.向上转型
1.1向上转型
对象的上转型对象的实体是子类负责创建的,但上转型对象会失去原对象的一些属性和功能
实际就是创建一个子类对象,将其当作父类对象来使用。
语法格式 : 父类类型 对象名 = new 子类类型();
Animal animal = new Cat();//假设Animal是父类,Cat是子类
animal是父类类型,但可以引用一个子类对象,因为是从小范围向大范围的转换。
1.2使用场景
1.直接赋值
2.方法传参
3.方法返回
public class TestAnimal{
// 方法传参:形参为父类型引用,可以接收任意子类的对象
public static void eatFood(Animal a){//父类接收
a.eat();//eat为子类重写的方法
}
// 作返回值:返回任意子类对象
public static Animal buyAnimal(String var){//要求返回类型是父类Animal
if("狗" == var){
return new Dog();//可以返回子类Dog
}else if("猫" == var){
return new Cat();//可以返回子类Cat
}else{
return null;
}
}
public static void main(String[] args){
Animal cat = new Cat(); // 1. 直接赋值:子类对象赋值给父类对象
Dog dog = new Dog();
eatFood(dog);//传子类创建的对象
eatFood(cat);//传子类创建的对象
Animal animal = buyAnimal("狗");
}
}
向上转型可以让代码实现更加的灵活
1.3上转型对象会失去原对象的一些属性和功能
1.上转型对象不能操作子类新增的成员变量,不能掉调用子类新增的方法。
2.上转型对象可以访问子类继承或隐藏的成员方法,也可以调用子类继承的方法或子类的重写方法。