有了多态的存在,instanceof存在的价值在什么地方

本文介绍了Java中如何通过instanceof关键字实现安全的向下转型,以及如何利用这一特性处理多态对象的不同方法调用场景。具体示例展示了如何在运行时判断对象的具体类型并执行相应的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public interface Base{
 public void base();
}
class Child1 extends Base{
  public void base(){}  //实现接口方法
  public void a(){}   //两个子类,方法不同,也中是重写父类的方法
}
class Child2 extends Base{
  public void base(){}  //实现接口方法
  public void b(){}   //两个子类,方法不同,也中是重写父类的方法
}
public class Other{
  public static void main(String[] args){
       
  }
  public static calc(Base b){
     b.base();   //调用接口方法
      if (b instanceof Child1){
        ((Child1)b).a();    //为了转型安全,使用intanceof 先判断是不是Child1的对象
      }
     else if (b instanceof Child2){
        ((Child2)b).b();    //为了转型安全,使用intanceof 先判断是不是Child2的对象
      }
  }
}
向上转型,会隐藏对象的型别信息,在实际应用时,需要绑定到具体的型别,即向下转型。这时候,instanceOf就有了用武之地。

必须使用instanceof的情况,假设类A有两个子类B和C,需要运行时根据类B或C的对象来执行不同的逻辑,这种情况就必须用instanceof。较常出现这种情况是当使用Vector,由于其内部存储的是Object,需将其向下转型才能正常使用。此外解决这类问题还有一种方式就是使用try/catch语句块,不过一般的情况不建议使用try/catch语句块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值