java向上转型和向下转型
来源:互联网 发布:c 模拟退火算法 题目 编辑:程序博客网 时间:2024/06/04 22:09
java向上转型和向下转型
一、概念
对于java这个面向对象的语言来说,向上转型和向下转型用到的还是挺多的,先根据我自己的理解说一下两者的概念:
很好理解,从类的继承关系来说,父类为上,子类为下,所以向上转型就是从子类型转换成父类型,而想下转型就是从父类型转化成子类型。
二、例子
下面通过一个小例子来更加直观的体会下:
public class UpcastingAndDowncasting { public static void main(String[] args){ //向上转型--成功 Person p1 = new Student(); p1.say(); //向下转型--成功 Person p2 = new Student(); Student s1 = (Student)p2; s1.say(); s1.study(); //向下转型--失败 /*Person p3 = new Person(); Student s2 = (Student)p3; s2.say(); s2.study();*/ }}class Person{ public void say(){ System.out.println("Person say"); }}class Student extends Person{ @Override public void say(){ System.out.println("Student say"); } public void study(){ System.out.println("Student study"); }}
三、分析
1、向上转型:
根据上面的例子很容易看出向上转型一般不会存在很大的问题,用的就是面向对象的多态特性,父类引用指向子类对象,如果父类引用想调用子类对象中特有的方法编译时不会通过的。
2、向下转型
(1)可以正常使用的情况:
可以看到向下转型存在两种形式,可以正常使用的依然用到了多态,父类引用指向子类对象,再将父类引用指向的对象强制类型转换为子类并赋值给子类引用,因为本来就是子类对象,最后用的时候还是子类对象,所以不会有问题。
(2)不能正常使用的情况
如果实例化的时候就是让父类对象指向了父类变量,再将父类引用指向的对象强制类型转换为子类并赋值给子类引用,就会出现问题了,虽然编译阶段不会报错但是运行会出错,因为实例化的就是父类对象,不包含子类的方法,所以调用子类特有方法的时候就会报错。
阅读全文
0 0
- java 向上转型和向下转型
- java 向上转型和向下转型
- Java 向上转型和向下转型
- java向上转型和向下转型
- java中的向上转型和向下转型
- Java中的向上转型和向下转型
- java中的向上转型和向下转型
- java中的向下转型和向上转型
- Java 向上转型和向下转型
- java向上转型和向下转型
- Java的向上转型和向下转型
- java向上转型和向下转型
- Java 向上转型和向下转型
- Java向上转型和向下转型
- java向上转型和向下转型
- Java-向上转型和向下转型
- java向上转型和向下转型
- java向上转型和向下转型
- python3操作csv文件
- Xshell 上传和下载文件
- React Native之Android 和 iOS在点击触发事件时的兼容性处理
- 小翼机器人,如何使用百度语音,识别微信语音并与好友或在微信群内自动聊天
- 将Python和R整合进一个数据分析流程
- java向上转型和向下转型
- 我的小工具-远程读卡器web客户端(nodejs+websocket实现实时指令交互)
- php 日期函数
- Java比较器-Comparable和Comparator
- EasyUI中 datagrid 插件 使用自定义的icon图标
- NAT穿透工具pwnat
- 【NOI2015】软件包管理器(树链剖分)
- 【云栖精选】当AI来敲门_一刊尽览人工智能
- iOS 单例模式的写法