向上转型与向下转型

原创 2016年03月13日 11:28:54

向上转型,将子类型隐藏。就不能使用子类的特有方法了

比如 有一个抽象类Animal  有eat()方法,类Pig 继承了Animal,复写了eat()方法之外,还定义了自己独有的sleep()方法。
此时 如果 创建Pig的实例,并将类型向上转型为 Animal,将不能访问Pig类的sleep方法,而只能访问父类 Animal定义的方法。

那么如何让实际上是内容是 Pig类型的引用A 访问 Pig 类独有的方法呢,此时就需要向下转型

 

向下转型

Pig pig = Pig(A);
强制将A转化为Pig类型,这样就能访问A的sleep()方法了,(当然前提是A确实是一个Pig类型的实例)

如果 有个Dog 类也继承了Animal类,此时你讲一个Dog类的实例向下转型为Pig,

这将会在运行期而不是编译器报错,
报错的类型是 Pig cannot be cast to Dog  ,也就是类型转化出错了。

所以,向下转型时最好用到一个 关键字 instance

instanceof :用于判断对象的具体类型,只能用于引用数据类型判断,通常在向下转型前用于健壮性的判断。

比如 (A instanceof Pig){…..}

版权声明:本文为博主原创文章,未经博主允许不得转载。

java向上转型向下转型

  • 2012年09月04日 10:44
  • 19KB
  • 下载

JAVA的向上转型与向下转型(二)

java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。 什么叫父类引用指向子类对象,且听我慢慢道来. 从2个名词开始说起:向上转型(upcasting) 、向下转型(downcas...

Java向上转型和向下转型

Java向上转型和向下转型

Java多态 向上转型 向下转型

封装、继承、多态是面向对象的三大特征,在Java中什么是多态? Java引用变量有两种类型,分别是编译时类型和运行时类型。何为编译时类型,编译时类型就是由声明该变量时使用的类型决定,而运行时类...

【java】向上转型和向下转型

java:子类对象向上转型为父类实例后,调用的是父类方法,还是子类方法? 当子类重写了父类方法,向上造成后调用的是子类方法; 子类没有重写父类方法,向上造型后调用的是父类方法。 package...

java向上转型与向下转型

java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。 什么叫父类引用指向子类对象,且听我慢慢道来. 从2个名词开始说起:向上转型(upcasting) 、向下转型(dow...

java入门(向上转型和向下转型)

相信很多第一次接触编程的人听到这东西肯定会觉得很难理解,说到底,向上转型和向下转型都只是你变量类型的一个转换,比如:short a = 10; a = a + 20;//看这段代码 你们说输出结果会是...

JAVA中的向下转型(downcasting)及泛型与向上转型(upcasting)及RTTI、反射机制

JAVA中的向下转型(downcasting)及泛型与向上转型(upcasting)及RTTI、反射机制   向上转型(upcasting):对象可以作为它本身的类型使用也可以作为它父类(基类)对...

[Java] 关于向上转型 向下转型

[Java] 关于向上转型 向下转型

java向上转型和向下转型

java向上转型和向下转型 (转载:http://hnwsha.i.sohu.com/blog/view/177489975.htm) 转型是在继承的基础上而言的,继承是面向对象语...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:向上转型与向下转型
举报原因:
原因补充:

(最多只允许输入30个字)