关于超类转换为子类问题

超类转换为子类,应该用instanceof检查。即
if(超类instanceof子类)
{进行转换}

可是 超类instanceof子类 是不是都返回false啊?这样子不是不能进行转换了吗?

阅读 2.9k
4 个回答

这个比较不是类和类之间的比较,而是一个变量的声明类型和实际类型之间的比较。比如 A 是 B 的父类(或超类),某个变量 a 被声明为 A 类型,但它实际上可能是 B 类型。a instanceof B 就是为了弄清 a 到底是不是 B 类型。

你对instanceof的理解有误,可以参考 捏造的信仰 的回答,类和实例的概念也有点混淆, a instanceof B 是为了弄清实例 a 到底是不是 B 类型,可以看下面向对象里头的『多态』概念

instanceof 检查的是值的类型。即使那个值来自一个 Object变量,该true时还会得到true。

如果是为了申明类型,不建议用继承,用接口.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题