博客
关于我
【安卓学习笔记】JAVA基础Lesson9-对象的转型
阅读量:351 次
发布时间: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/

你可能感兴趣的文章
js中事件捕获和事件冒泡(事件流)
查看>>
js的各种数据类型判断(in、hasOwnProperty)
查看>>
严格模式、混杂模式与怪异模式
查看>>
一篇文章带你搞定 Java 中字符流的基本操作(Write / Read)
查看>>
HTML 和 CSS 简单实现注册页面
查看>>
(SpringMVC)springMVC.xml 和 web.xml
查看>>
Oracle 学习一篇文章就够了(珍藏版)
查看>>
一篇文章带你搞定 Oracle 的体系结构
查看>>
Oracle 单行函数
查看>>
一篇文章带你搞定官方推荐 Stack 的替代品 双端队列 Deque
查看>>
(LeetCode)Java 求解搜索旋转排序数组
查看>>
(模拟数组)Java 求解螺旋矩阵 II
查看>>
Python学习:字符串
查看>>
ERROR 1146 (42S02): Table 'mysql.role_edges' doesn't exist
查看>>
DIJ + Topsort + DFS - Roads and Planes G(道路与航线) - 洛谷 P3008
查看>>
计算几何(旁切圆) - Ex-circles - UVA 11731
查看>>
DP - Tickets - HDU - 1260
查看>>
phpStudy for Linux (lnmp+lamp一键安装包)
查看>>
【安卓学习笔记】JAVA基础Lesson9-对象的转型
查看>>
本校暑假训练营11_Python数据分析入门7-网络1
查看>>