博客
关于我
【安卓学习笔记】JAVA基础Lesson9-对象的转型
阅读量:352 次
发布时间:2019-03-04

本文共 1332 字,大约阅读时间需要 4 分钟。

对象的转型是面向对象编程中的多态性体现。在Java中,对象的转型分为向上转型和向下转型。以下是详细的解释和示例:

1. 向上转型

向上转型是指将子类对象赋值给父类引用。这种转型在Java中是自动进行的,因为子类是父类的扩展,父类引用可以存储子类对象。

示例代码:

class Father {    String str;    int num;    void Function() {        System.out.println("Father's Function");    }}class Son extends Father {    char ch;    void Fun_son() {        System.out.println("Son's Fun_son");    }    void Function() {        super.Function();        System.out.println("Son's Function");    }}class Test {    public static void main(String[] args) {        Son a = new Son();        Father b = a; // 向上转型,b引用指向Son对象        b.str = "abc";        b.num = 123;        b.Function(); // 调用Son类的Function方法    }}

解释:

  • Son a = new Son(); 创建一个Son对象a。
  • Father b = a; 将a赋值给Father类型的引用b,实现了向上转型。
  • b.str = "abc"; 由于b是Father引用,可以直接访问Son对象a的str成员变量。
  • b.Function(); 调用的是Son类的Function方法,因为b引用指向的是Son对象。

2. 向下转型

向下转型是指将父类对象赋值给子类引用,需要使用强制转换操作,否则会导致编译错误。在运行时,必须确保父类对象实际上是子类类型,否则会抛出ClassCastException。

示例代码:

class Test {    public static void main(String[] args) {        Father A = new Father(); // 创建一个Father对象        Son B = (Son) A; // 向下转型,B引用指向Father对象        B.Fun_son(); // 调用Father的Fun_son方法,无法访问Son特有的成员变量    }}

注意事项:

  • 向下转型必须确保父类对象实际上是子类类型,否则会抛出ClassCastException。
  • 使用强制转换时,通常会带有风险,需谨慎处理。

总结

  • 向上转型:自动发生,将子类对象赋值给父类引用,适用于通用场景。
  • 向下转型:强制转换,用于访问子类特有的成员,需确保类型安全。

通过这些示例,可以更好地理解Java中的多态性以及引用类型的转换机制。

转载地址:http://qslr.baihongyu.com/

你可能感兴趣的文章
map的find函数和count函数
查看>>
C++并发与多线程(一)
查看>>
7628 EDCCA认证寄存器修改(认证自适应)
查看>>
计算机网络子网划分错题集
查看>>
java一些基本程序
查看>>
神经元与神经网络一之概述
查看>>
FANUC机器人R-30iB_R-30iB PLUS备件规格型号统计整理
查看>>
FANUC机器人的镜像备份操作及U盘格式化具体步骤
查看>>
vue-依赖-点击复制
查看>>
LeetCode 116填充每个节点的下一个右侧结点指针
查看>>
2021-4-28【PTA】【L2-1 包装机 (25 分)】
查看>>
Arduino mega2560+MPU6050利用加速度值控制舵机
查看>>
pycharm+python+MS SQLSERVER 实战2、实现爬虫程序。
查看>>
紫书——蛇形填数
查看>>
刷题计划1——poj1753
查看>>
蓝桥杯备战——刷题(2019)
查看>>
未定义的变量“py”或函数“py.command”
查看>>
最短路径问题—Dijkstra算法
查看>>
A Guide to Node.js Logging
查看>>
webwxbatchgetcontact一个神奇的接口
查看>>