该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

之前一直搞不明白,向下转型的实际意义,虽然知道向下转型怎么写, 现在我来讲解下 向下转型 的实际作用,如果有错的话,大家可以指出, 如果认为我说的对的话可以给个赞.

一下是代码,在注释中详细说明了向下转型的用法:

class Father {

String name = "a";

public void print1() {

System.out.println("Father");

}

}

class Son1 extends Father {

int age = 18;

//print3 作用,接收一个子类实例,然后根据不同的子类,调用不同子类的方法,输出不同的内容.

public void print3(Father son) { //因为不确定这个类是哪个子类,所以用父类接收一个对象,这步属于向上转型,这个对象已经实例化,如果没实例化就是NULL了

Father ff = son; //再把这个 对象,再传给一个父类对象,其实这步可以省略

if (son instanceof Son2) { //判断这个对象实例是不是 Son2 的对象,

Son2 s2 = (Son2) ff; //因为这个ff(son)是父类对象接收的,所以要把 ff 强制向下转型,然后该对象就恢复了,就可以使用Son2中的方法 ,并不能 直接用son,因为son是父类接收的,不是子类接收的;

s2.print2();

} else { //因为只有2个子类,所以不是SON2就是SON1 了.

Son1 s1 = (Son1) ff;

s1.print2();

}

}

public void print1() {

System.out.println("son");

}

public void print2() {

System.out.println("new son");

}

}

class Son2 extends Father {

public void print1() {

System.out.println("son222");

}

public void print2() {

System.out.println("new son 222");

}

}

public class D {

public static void main(String[] args) {

Son1 s = new Son1(); //实例化一个Son1子类对象

Son2 s2 = new Son2();

s.print3(s); //因为print3 方法在 Son1,只能用Son1 的对象调用.

}

}

java的向下转型_终于搞明白向下转型的作用了,还不懂的进来看下.相关推荐

  1. python实现异步的几种方式_终于搞明白了,异步Python比同步Python究竟快在哪里?...

    大家好,你是否听人们说过,异步 Python 代码比"普通(或同步)Python 代码更快? 果真是那样吗? 同步和异步是什么意思? Web 应用程序通常要处理许多请求,这些请求在短时间内来 ...

  2. Java开发面试问题,2021年Java进阶者的新篇章,终于搞明白了

    前言 很多Java程序员一直希望找到一份完整的学习路径,但是市面上很多书都是专注某一个领域的,没有一份完整的大图,以至于很多程序员很迷茫,不知道自己到底应该从哪里开始学,或者不知道自己学习些什么. 好 ...

  3. 终于搞明白gluPerspective和gluLookAt的关系了

    2019独角兽企业重金招聘Python工程师标准>>> 终于搞明白gluPerspective和gluLookAt的关系了 函数原型 gluLookAt(GLdoble eyex,G ...

  4. matlab中异步电机y接法,电机接法Y和三角形什么区别,今天终于搞明白了!

    原标题:电机接法Y和三角形什么区别,今天终于搞明白了! 电动机三角形接法和星形接法区别: 1.异步电动机因其结构简单.价格便宜.可靠性高等优点被广泛应用.但在起动过程中起动电流较大,所以容量大的电动机 ...

  5. 最详细的解释小白也能听懂,终于搞明白了

    前言 2021春季社招正在火热招聘当中,很多人都挂在了技术知识掌握还是不够广,不够深,甚至连一些基础的问题都只能模模糊糊的回答出来.你说,这跳槽不是跳了个寂寞吗? 其实,根本原因还是对于自己的技术栈掌 ...

  6. webpack打包生成的map文件_一站式搞明白webpack中的代码分割

    上次分析到通过devtool的配置项来设置source map,在线上环境可以通过设置成cheap-module-source-map来生成单独的map文件,但是map文件在线上环境会不会每次都加载呢 ...

  7. java pipeline模式_NIO系列-4: 彻底搞明白Pipeline和Handler

    我在51cto写文章,只是为了记录自己的记忆,毕竟好记性不如烂笔头.不是为了博眼球,吸引粉丝. 这篇文章,我来讲解下NIO里的2个重要的概念:pipeline和handlers. 在设计模式里面提到过 ...

  8. wait放弃对象锁_终于搞懂了sleep/wait/notify/notifyAll,真的是不容易

    sleep/wait/notify/notifyAll分别有什么作用?它们的区别是什么?wait时为什么要放在循环里而不能直接用if? 简介 首先对几个相关的方法做个简单解释,Object中有几个用于 ...

  9. 此安装程序必须使用 java 开发工具包 (jdk) 执行_彻底搞懂Java开发工具包(JDK)安装及环境变量配置...

    [官方正版]java jdk 9学习笔记 78.4元 包邮 (需用券) 去购买 > 一.Java 和 JDK 是什么 Java:Java是一种优秀的程序设计语言,它有非常多的语言特性,如简单性. ...

最新文章

  1. ubuntu14.04上搭建android开发环境
  2. 一个浙江商人立下的22条规矩
  3. Perfect World
  4. termcap - 终端功能数据库详解
  5. 一段按页自动滚动文字或图片的Js代码
  6. HDU-1251 统计难题 map写法
  7. python学习-10 运算符1
  8. 2017年15佳Android黑客应用
  9. docker选择安装路径_Docker安装
  10. Java代理模式学习
  11. 搜索引擎学习笔记001---lucene简明介绍
  12. 测试nb信号的软件_NB-IOT测试仪NB测试仪无线网络信号质量检测网络信号故障定位...
  13. 深入计算机组成原理(二十六)Superscalar和VLIW:如何让CPU的吞吐率超过1?
  14. ping-pong buffer
  15. Android patchrom 流程详解
  16. 川土微电子|高速高性能RS-485/422收发器系列
  17. 在群晖中批量删除重复文件
  18. 七上十一课用计算机写作教案,长春版七上写作课教案-《属对》
  19. 多旋翼飞行器设计与控制(二)—— 基本组成
  20. 【C语言题目】循环-约瑟夫环

热门文章

  1. 基于生成对抗的知识图谱零样本关系学习 AAAI2020
  2. 华为云mysql端口号_华为云云耀服务器远程连接mysql,报错10038端口配置问题。
  3. 看完这篇文章,还说自己不会使用Zookeeper命令吗
  4. python正则匹配空格+数字+空格_详解Python中正则匹配TAB及空格的小技巧
  5. linux学习第四周作业练习
  6. [洛谷P1369]矩形
  7. 零基础入门│带你理解Kubernetes
  8. 精通SpringBoot——第二篇:视图解析器,静态资源和区域配置
  9. Mysql 远程连接的问题 2003 - Can't connect to MySQL server on '39.106.187.107' (60 Operation timed out)...
  10. 从 JavaScript 到 TypeScript