子类转型成父类是向上转型,反过来说,父类转型成子类就是向下转型。但是,向下转型可能会带来一些问题:我们可以说猫是动物,但不能说动物就是猫。

public class A {

void aMthod() {

System.out.println("A method");

}

}

A的子类B:

public class B extends A {

void bMethod1() {

System.out.println("B method 1");

}

void bMethod2() {

System.out.println("B method 2");

}

}

C类:

public class C {

public static void main(String[] args) {

A a1 = new B(); // 向上转型

a1.aMthod(); // 调用父类aMthod(),a1遗失B类方法bMethod1()、bMethod2()

B b1 = (B) a1; // 向下转型,编译无错误,运行时无错误

b1.aMthod(); // 调用父类A方法

b1.bMethod1(); // 调用B类方法

b1.bMethod2(); // 调用B类方法

A a2 = new A();

B b2 = (B) a2; // 向下转型,编译无错误,运行时将出错

b2.aMthod();

b2.bMethod1();

b2.bMethod2();

}

}

第二次转型出错是因为a1指向一个子类B的对象,所以子类B的实例对象b1当然也可以指向a1。而a2是一个父类对象,子类对象b2不能指向父类对象a2。

向上传递 java_Java向上转型向下转型相关推荐

  1. Java多态中的 向上转型/向下转型

     Java 向上转型和向下转型的详解 转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法 ...

  2. Java从入门到放弃09---多态/向上转型/向下转型/多态内存图/抽象类/关键字abstract不能和哪些关键字共存/接口/类与类,类与接口,接口与接口的关系/抽象类与接口的区别

    Java从入门到放弃09-多态/向上转型/向下转型/多态内存图/抽象类/关键字abstract不能和哪些关键字共存/接口/类与类,类与接口,接口与接口的关系/抽象类与接口的区别 01 多态 多态指的是 ...

  3. Java 中的上转型和下转型

    在我们的日常中,上转型和下转型都使用的比较少,所以当别人问起来什么是上转型,什么是下转型,自己往往一片模糊,或者不能将他们进行明显的区分. 在这里,我将以我个人理解来论述上下转型,希望对大家有帮助,如 ...

  4. 类.接口.多态.向上转型.向下转型

    一:综述 电脑利用USB接口实现键盘的输入.鼠标的移动 二:代码 USB.java package ClassAndObject;public interface USB {public abstra ...

  5. Java接口,多态,向上转型,向下转型的意义

    接口 官方解释: Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现 ,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 包含 ...

  6. Java向上转型 向下转型

    java转型,只要记住一句话:父类引用子类对象. 向上转型(upcasting),向下转型(downsasting). 例如:有两个类,Animal是父类,cat是子类. Animal an=new ...

  7. JAVA中多态以及向上转型向下转型、重写的讲解

    重写 重写(override):也称为覆盖.重写是子类对父类非静态.非private修饰,非final修饰,非构造方法等的实现过程 进行重新编写, 注意!!!返回值和形参都不能改变. 重写的好处在于子 ...

  8. Java 向上转型 向下转型 instanceof

    看过的一些比较好的博文 Person per = new Student(); //向上转型 Student stu = (Student) per; //向下转型 Java向上转型和向下转型的通俗简 ...

  9. java中为什么使用上转型和下转型

    为什么使用上转型?因为当一个父类有很多子类,子类都重写了父类的方法并加以使用.这时候,如果要在之前代码让你用其他子类来实现,就变得很简单,只需要把A a = new B();换成A a = new C ...

  10. java 上转型对象_Java上转型和下转型对象

    版权声明:转载原创文章请以超链接形式请注明原文章出处,尊重作者,尊重原创! 恰饭广告 上转型对象:子类创建对象 并将这个对象引用赋值给父类的对象. 语法格式:Father f=new Son(); 注 ...

最新文章

  1. 记一次windows的安装
  2. I2S 和 PCM 区别
  3. 阿里设计师出品!B端产品文案指南
  4. CVPR 2019开源论文 | Rob-GAN:生成器、鉴别器以及对抗攻击者
  5. 【STM32】定时器程序
  6. leetcode 318. Maximum Product of Word Lengths | 318. 最大单词长度乘积
  7. 阿里云rds升级mysql8_为更强大而生的开源关系型数据库来了!阿里云RDS for MySQL 8.0 正式上线!...
  8. (四)Paint函数实现QTableView中增加QCheckBox的方法
  9. 《学习OpenCV3》第11章 常见的图像变换
  10. java 虚拟机内存不足_JAVA虚拟机内存不够解决办法
  11. JS自定义鼠标右键菜单
  12. FinTech4Good创始人张晓晨:全球区块链的产业应用趋势
  13. windows下rainbond 安装unable to find image locally docker errot response from daemon
  14. 游戏画质修改器GFX工具箱(GFX tool)_9.9.8特别版
  15. 珍藏的PS技巧(可以尝试一下哦)(转载)
  16. 2000-2017年全球人口密度数据下载LandScan
  17. Json格式字符串转字典
  18. 英文不好到底能不能学会编程?
  19. 科技周刊第五期:科学技术在发展中的作用
  20. 【人脸识别】PCA人脸识别(识别率)【含GUI Matlab源码 802期】

热门文章

  1. 在html标签中写css样式,html style样式标签元素教程
  2. python中的sorted是什么意思_Python中sorted()排序与字母大小写的问题
  3. python类之间传参_没看懂这11 条,别说你精通 Python 装饰器
  4. php 五子棋源联机版_五子棋服务器客户端联机对战 C++版完整代码
  5. reflexil教程_【转载】教你使用 Reflexil 反编译.NET
  6. 因为此网站使用了 hsts_HSTS原理及实践
  7. php模板建站seo,phpwin建站教程,phpwind模板
  8. python arduino 蓝牙_树莓和Arduino之间的蓝牙通讯
  9. 05. Django基础:请求和响应
  10. 圆台下料展开计算方法_冲压件展开计算方法(二),转发给每一位冲压人