多态--向上向下转型

向上转型:将子类的实例赋值给父类类型的引用变量。这样做的好处是可以统一对待不同子类的对象,提高代码的灵活性和可扩展性。例如:

Animal animal = new Dog(); // 向上转型
这里 Dog 类是 Animal 类的子类,通过向上转型,我们可以使用 animal 引用变量访问 Animal 类中定义的方法和属性,而不需要知道具体是哪个子类的实例。

我们为什么需要向上转型:例如在animal类中定义了一个方法为了让cat和dog都可以使用则方法中的参数为(cat)(dog)这样就出现了两个方法体相同但是参数的变量名不同,这样则会显得十分冗余,所以我们通过多态的向上转型,让animal中的方法参数为animal类型这样就可以只写一个方法,不论是cat还是dog向上转型后即可调用父类中的这个方法。

向下转型:将父类类型的引用变量转换为子类类型。这样做是为了访问子类特有的方法和属性。需要注意的是,向下转型可能会引发 ClassCastException 异常,因此在进行向下转型时应该先使用 instanceof 运算符进行类型检查。例如:

if (animal instanceof Dog) {
    Dog dog = (Dog) animal; // 向下转型
    dog.bark();
}
我们为什么需要向下转型:例如在向上转型之后编译看左边运行看右边,但是因为我们向上转型成了父类则在调用方法时不可以使用子类中特有的方法,因为编译时会报错,所以我们对于这个对象在转换成父类后调用方法后,即可将这个对象复原,重新回到自己这个状态,向下转型后即可。

注意:如果不通过向下转型而去通过子类在new一个子类对象再去调用子类方法是可以的,但是已经不是在对同一个对象进行操作了,这时是两个对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值