java——向上转型

一.向上转型

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.上转型对象可以访问子类继承或隐藏的成员方法,也可以调用子类继承的方法或子类的重写方法。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值