向上传递 java_Java向上转型向下转型
子类转型成父类是向上转型,反过来说,父类转型成子类就是向下转型。但是,向下转型可能会带来一些问题:我们可以说猫是动物,但不能说动物就是猫。
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向上转型向下转型相关推荐
- Java多态中的 向上转型/向下转型
Java 向上转型和向下转型的详解 转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法 ...
- Java从入门到放弃09---多态/向上转型/向下转型/多态内存图/抽象类/关键字abstract不能和哪些关键字共存/接口/类与类,类与接口,接口与接口的关系/抽象类与接口的区别
Java从入门到放弃09-多态/向上转型/向下转型/多态内存图/抽象类/关键字abstract不能和哪些关键字共存/接口/类与类,类与接口,接口与接口的关系/抽象类与接口的区别 01 多态 多态指的是 ...
- Java 中的上转型和下转型
在我们的日常中,上转型和下转型都使用的比较少,所以当别人问起来什么是上转型,什么是下转型,自己往往一片模糊,或者不能将他们进行明显的区分. 在这里,我将以我个人理解来论述上下转型,希望对大家有帮助,如 ...
- 类.接口.多态.向上转型.向下转型
一:综述 电脑利用USB接口实现键盘的输入.鼠标的移动 二:代码 USB.java package ClassAndObject;public interface USB {public abstra ...
- Java接口,多态,向上转型,向下转型的意义
接口 官方解释: Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现 ,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 包含 ...
- Java向上转型 向下转型
java转型,只要记住一句话:父类引用子类对象. 向上转型(upcasting),向下转型(downsasting). 例如:有两个类,Animal是父类,cat是子类. Animal an=new ...
- JAVA中多态以及向上转型向下转型、重写的讲解
重写 重写(override):也称为覆盖.重写是子类对父类非静态.非private修饰,非final修饰,非构造方法等的实现过程 进行重新编写, 注意!!!返回值和形参都不能改变. 重写的好处在于子 ...
- Java 向上转型 向下转型 instanceof
看过的一些比较好的博文 Person per = new Student(); //向上转型 Student stu = (Student) per; //向下转型 Java向上转型和向下转型的通俗简 ...
- java中为什么使用上转型和下转型
为什么使用上转型?因为当一个父类有很多子类,子类都重写了父类的方法并加以使用.这时候,如果要在之前代码让你用其他子类来实现,就变得很简单,只需要把A a = new B();换成A a = new C ...
- java 上转型对象_Java上转型和下转型对象
版权声明:转载原创文章请以超链接形式请注明原文章出处,尊重作者,尊重原创! 恰饭广告 上转型对象:子类创建对象 并将这个对象引用赋值给父类的对象. 语法格式:Father f=new Son(); 注 ...
最新文章
- 记一次windows的安装
- I2S 和 PCM 区别
- 阿里设计师出品!B端产品文案指南
- CVPR 2019开源论文 | Rob-GAN:生成器、鉴别器以及对抗攻击者
- 【STM32】定时器程序
- leetcode 318. Maximum Product of Word Lengths | 318. 最大单词长度乘积
- 阿里云rds升级mysql8_为更强大而生的开源关系型数据库来了!阿里云RDS for MySQL 8.0 正式上线!...
- (四)Paint函数实现QTableView中增加QCheckBox的方法
- 《学习OpenCV3》第11章 常见的图像变换
- java 虚拟机内存不足_JAVA虚拟机内存不够解决办法
- JS自定义鼠标右键菜单
- FinTech4Good创始人张晓晨:全球区块链的产业应用趋势
- windows下rainbond 安装unable to find image locally docker errot response from daemon
- 游戏画质修改器GFX工具箱(GFX tool)_9.9.8特别版
- 珍藏的PS技巧(可以尝试一下哦)(转载)
- 2000-2017年全球人口密度数据下载LandScan
- Json格式字符串转字典
- 英文不好到底能不能学会编程?
- 科技周刊第五期:科学技术在发展中的作用
- 【人脸识别】PCA人脸识别(识别率)【含GUI Matlab源码 802期】
热门文章
- 在html标签中写css样式,html style样式标签元素教程
- python中的sorted是什么意思_Python中sorted()排序与字母大小写的问题
- python类之间传参_没看懂这11 条,别说你精通 Python 装饰器
- php 五子棋源联机版_五子棋服务器客户端联机对战 C++版完整代码
- reflexil教程_【转载】教你使用 Reflexil 反编译.NET
- 因为此网站使用了 hsts_HSTS原理及实践
- php模板建站seo,phpwin建站教程,phpwind模板
- python arduino 蓝牙_树莓和Arduino之间的蓝牙通讯
- 05. Django基础:请求和响应
- 圆台下料展开计算方法_冲压件展开计算方法(二),转发给每一位冲压人