instanceof关键字

  • 实现父类转型为子类的效果(向下转型)
  • 有了对象的多态性以后,堆内存中加载了子类继承的结构和子类特有的属性和方法
  • 但是声明为父类类型,无法调用子类特有的成员.
  • 使用强制类型转换方法实现调用子类特有成员的效果

    Person p = new Man(); Man m = (Man) p ;//运行正常
    Woman w = (Woman) p ; //编译可以通过,但是会出现ClassCastException
  • 为避免向下转型时出现ClassCastException异常,在转型之前,先进行instanceof的判断,一旦返回true就进行转型.
  • 如果a instanceof A is true,则a istanceof B is true(B是A的父类).

Person p = new Woman (); Man m = (Man) p;//编译通过,运行不通过
Object obj = new Woman (); Person p = (Person) obj;//可以通过
Person p = new Person (); Man m = (Man) p4;//编译通过,运行不通过
Object o = new Date (); String str = (String) o;//编译通过,运行不通过

1,4为无关类型,不能强转
3结构不同,不能
2间接父类转型



rengang
1 声望0 粉丝

下一篇 »
static关键字