美文网首页笔试&&面试经验
向上转型与向下转型

向上转型与向下转型

作者: jsy_hello | 来源:发表于2017-07-02 09:44 被阅读0次

父类引用指向子类对象,则称为向上转型(upcasting)
子类引用指向父类对象,称为向下转型(downcasting)如果这个父类对象是子类向上转型而来,则安全,反之不安全,避免不安全向下转型的方法是先用isntanceof运算符判断向下转型的对象是不是向下转型的目标对象。
个人助记方法: 将父类对象赋值给子类引用,那么是往下走,那么就是向下转型;那么反之,将子类对象赋值给父类引用,那么就是向上走,就是向上转型。

向上转型啥时候都可以,向下转型对象必须是向上转型的产物,也就是要想先下转型,你得先向上转型,否则你的操作是不安全的。

代码背景:Father是父类,Son是子类

Father f = new Son();//向上转型
Son s = (Son)f;//安全向下转型

Father f = new Father();//声明父类
Son s = (Son)f;//不安全向下转型,编译会过,运行会错

Father f = new Father();//声明父类
if(f instanceof Son){
    Son s = (Son)f;//安全向下转型,如果f不是Son的实例,那么就不会发生转型
}

向上转型,丢失了子类个性化方法,要注意持有什么类型的引用,更要注意类型引用的指向的对象代码实现。
其实类型转换主要是在父类和子类之间进行,如果你要把兄弟类相互转换,那么你也会吃到编译通过,运行报错的结果。
既然说到了向上与向下转型,那么不得不说他们的应用场景,纯属个人愚见,也有参考这位兄台的文章,大家可以去拜读一番。

首先是向上向下转型的使用场景常见的是在集合类中,比如你有一个父类和N个子类,然后你想把这些子类装进一个集合里面,这个时候你肯定不会为每一个子类都去创建一个集合来分别存储,毕竟这么干会写很多重复的代码,你肯定会用泛型,自然而然的泛型的类型肯定是用父类的类型,因为任何一个子类的类型都不能存储其他兄弟类型,那么在你将各个子类对象塞进集合里的时候,会发生一个自动向上转型的过程,意思就是你塞进去的每个对象都会由一个父类的引用指向他们,向上转型就丢失了子类特有的方法,那么当你从集合里面拿出你的子类实例,这个时候你的子类其实根本无法调用他们作为子类对象的特有的方法,那么有什么办法可以让这些子类找回自己特有的方法呢,那就是向下转型了,这就是基本的向上向下转型的使用场景。如果你有兴趣,可以去看一看Android里面的findViewById这个方法寻找控件之后为什么还要强行向下转型,亦或者你可以去看一看java里面Object类的clone()方法并重写这个方法,基本上就是这么多了。

相关文章

  • 12.多态中的向上转型和向下转型

    多态中向上转型与向下转型 多态的转型分为向上转型与向下转型两种: A:向上转型:当有子类对象赋值给一个父类引用时,...

  • JAVA:向下转型和instanceof运算符的应用

    知识梳理 一:向下转型 1.向下转型:向下转型是与向上转型相对的概念,他是用子类引用指向父类实例.如: 这时就告诉...

  • 向上转型与向下转型

    父类引用指向子类对象,则称为向上转型(upcasting)子类引用指向父类对象,称为向下转型(downcastin...

  • java多态(重要O!)

    一、多态的语法 关于java语言中的向上转型和向下转型 1、向上转型(upcasting):子 -->父 2、向下...

  • 向上转型&向下转型

    向上转型也称为隐式转型或者自动转型父类引用指向子类实例,可以调用子类重写父类的方法以及父类派生的方法,无法调用子类...

  • 多态

    Java语言中的向上转型和向下转型, 1向上转型 (upcasting)子———>父 自动类型转换 2 ...

  • 12.对象的转型

    1.向上转型 2.向下转型 什么是向上转型? 向上转型------将子类的对象赋值给父类的引用 Student s...

  • C# 泛型委托的 逆变与协变

    先说两个引子 1,类型的向上转型和向下转型 Animal类型 转为 Dog 类型为向下转型,反之。 2,泛型的转型...

  • 4.5dynamic_cast操作符

    向上转型:指用派生类指针指向基类对象 向下转型:指将基类指针指向派生类对象 向下转型不会有任何问题,而向上转型默认...

  • JavaSE之多态

    转型:向上转型(上溯造型)、向下转型(下溯造型) 向上转型:父类引用指向子类对象。 父类的引用 = 子类的对象(也...

网友评论

    本文标题:向上转型与向下转型

    本文链接:https://www.haomeiwen.com/subject/cydncxtx.html