对象一旦向上转型为父类就无法调用子类的特有方法

解决方法就是用对象的向下转型

向上转型过程已经把Teacher当做父类People使用所以如果在Teacher类里面写一个特有方法我们是无法用 http://Xiaoming.XXX();进行调用

所以向下转型为原型:

对象向下转型是一个【还原】的动作

格式:子类名称 对象名 =(子类名称)父亲对象;

含义:将父类对象还原成本来的子类对象

例子如下

父类:

子类:

我们无法用Xiaoming.music();调用Teacher的特有方法

向下转型

如果把父类换成Animal 子类换成Cat更好理解

父类中有abstract方法eat;

子类有重写的abstract方法eat();和特有方法catchMouse()

向上转型为

Animal animal = new Cat();

Animal.eat()可以成功调用而Animal.catchMouse()不能调用

这时候就需要向下转型

Cat cat=(Cat)animal,将创建的属于Animal类的对象animal转为Cat类的cat对象

就可以用cat.catchMouse();调用法法catchMouse了

向下转型是有危险的,向下转型为什么说是还原呢?其实就是你是由什么转过来的你就应该转回什么,比如cat→animal,那么你就应该由对象animal→cat,假如还有一个animal的子类叫dog,你如果由animal→dog那么就是错误转型,就像我给了你亿元美金,你给回我的是一RMB那么就不是还原了。

java 向下转型_Java_向下转型相关推荐

  1. 【Java挠头】继承、抽象、接口、多态、向上转型、向下转型等精妙干货

    –本文摘要–     1.本文的目标读者:是了解Java基础,且对面向对象概念有所了解,但是对Java中继承.抽象类.接口.多态等等概念搞不清的初学者.     2.本文的内容摘要:讲述Java中的一 ...

  2. 重新精读《Java 编程思想》系列之向上转型与向下转型

    前言 今天重读了一下向上转型与向下转型,有些新的体会,了解了向上转型的好处,及如何向下转型.在此分享给大家. 向上转型 向上转型是用来表现新类和基类之间的关系.在传统中,由导出类转型成基类,在继承图中 ...

  3. Java 转型问题(向上转型和向下转型)

    Java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象. 什么叫父类引用指向子类对象? 从 2 个名词开始说起:向上转型(upcasting) .向下转型(downcasting). 举 ...

  4. 第三次学JAVA再学不好就吃翔(part35)--多态向上转型和向下转型

    学习笔记,仅供参考 文章目录 面向对象 多态 多态向上转型和向下转型 多态的好处和弊端 面向对象 多态 多态向上转型和向下转型 我们首先通过以下代码复习一下自动类型提升和强制类型转换: class B ...

  5. Java转型(向上转型和向下转型)

    在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型. 5.13.1 向上转型 我们在现实中常常这样说:这个人会唱歌.在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就 ...

  6. 【JAVA】关于向上转型与向下转型

    向上转型: 子类引用的对象转换为父类类型称为向上转型.通俗地说就是是将子类对象转为父类对象.此处父类对象可以是接口 如果子类重写了父类的方法,就根据这个引用指向调用子类重写的这个方法,不是调用父类的, ...

  7. java 使用class转型_java中向上转型(upcast)和向下转型(downcast)

    先看下面的程序: class Useful { int value = 20; public void f() {System.out.println("f() in the Useful ...

  8. java向上转型与向下转型

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

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

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

最新文章

  1. top命令按内存和cpu排序
  2. java题目不会做那么解答_有几道JAVA的题目不会做 哪位高手来解答一下!谢
  3. UML统一建模语言知识体系概述
  4. Linux 实践操作
  5. linux上还原自主nuget包需要注意的问题
  6. objective-C 的内存管理之-引用计数
  7. Spring之AOP动态代理详解
  8. [Java] 蓝桥杯ALGO-63 算法训练 乘法表
  9. python进阶之装饰器之5把装饰器作用到类和静态方法上
  10. 最简单!阿里云服务器采用 LNMP一键安装包 配置 Linux+Nginx+Mysql+PHP
  11. 【区块链开发入门】(二) 以太坊的编程接口
  12. mac 谷歌浏览器 跨域访问
  13. 输入法编辑器(IME)编程指南
  14. 在局域网被网络管理员限制了远程连接的默认端口3389,导致无法远程桌面连接
  15. 可伸缩系统的架构经验
  16. 解决两台路由器串联上网问题
  17. 查看计算机ip地址配置信息的命令是,查看电脑配置指令大全
  18. 戴尔电脑怎么录屏?这6个方法教你轻松录屏
  19. Centos7 su: 鉴定故障Error解决方法
  20. iia期是第几期_IIa期和IIb期的定义,区别

热门文章

  1. 【多线程】多线程锁住的是什么、std::lock_guard<std::mutex> locker(mutex_)
  2. Deep Learning for Computer Vision with Caffe and cuDNN
  3. activiti工作流引擎入门教程
  4. spring框架学习(三)junit单元测试
  5. 图形处理(十一)Stroke Parameterization
  6. 良好的代码风格养成记
  7. 20321关系数据库理论基础
  8. 使用keepalived监控tomcat 达到双机热备
  9. Windows Server 2008 R2下部署OCS 2007 R2 边缘服务器
  10. 如何最小化混合云中影子IT带来的风险