java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。
什么叫父类引用指向子类对象,且听我慢慢道来.
从2个名词开始说起:向上转型(upcasting) 、向下转型(downcasting).
举个例子:有2个类,Father是父类,Son类继承自Father。
Father f1 = new Son(); // 这就叫 upcasting (向上转型)
// 现在f1引用指向一个Son对象
Son s1 = (Son)f1; // 这就叫 downcasting (向下转型)
// 现在f1还是指向Son对象
第2个例子:
Father f2 = new Father();
Son s2 = (Son)f2; // 出错,子类引用不能指向父类对象
你或许会问,第1个例子中:Son s1 = (Son)f1;问什么 是正确的呢。
很简单因为f1指向一个子类对象,Father f1 = new Son(); 子类s1引用当然可以指向子类对象了。
而f2 被传给了一个Father对象,Father f2 = new Father();子类s1引用不能指向父类对象。
总结:
1。父类引用指向子类对象,而子类引用不能指向父类对象。
2。把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转换。
如:Father f1 = new Son();
3。把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转换。
如:f1 就是一个指向子类对象的父类引用。把f1赋给子类引用s1即 Son s1 = (Son)f1;
其中f1前面的(Son)必须加上,进行强制转换。
分享到:
相关推荐
总结来说,Java中的强制类型转换是一种必要的操作,用于在不同类型之间转换值。然而,应谨慎使用,因为不适当的转换可能会导致数据丢失或运行时错误。理解类型之间的兼容性以及何时需要转换对于编写健壮的Java代码至...
无论是自动类型转换还是强制类型转换,亦或是通过包装类进行转换,都需要开发者根据实际情况选择最合适的转换方式。此外,字符串与其他数据类型之间的转换也非常重要,尤其是在处理用户输入或显示数据时。通过学习和...
Java 中有两种主要的类型转换方式:自动类型转换(Automatic Type Conversion)和强制类型转换(Explicit Type Conversion)。下面我们将深入探讨这两种类型转换,以及它们在实际编程中的应用。 一、自动类型转换 ...
显式类型转换也称为强制类型转换,用于将一个较大的数据类型转换为较小的数据类型。需要注意的是,这可能会导致数据丢失。例如: ```java double x = 9.99; int nx = (int) x; // nx 的值为 9 ``` 为了防止数据...
本文将深入探讨Java中的数据类型转换,包括自动类型转换(隐式转换)和强制类型转换(显式转换)。 ### 自动类型转换(隐式转换) 当一个数据类型转换为另一个兼容的、范围更大的数据类型时,Java会自动执行这种...
本文详细介绍了Java中的数据类型转换规则,包括自动类型转换、强制类型转换和包装类过渡类型转换等内容。通过理解这些转换机制,开发者可以更灵活地处理不同类型之间的数据交换,从而编写出更加高效、健壮的程序。...
"Java中的强制类型转换 大数转小数" Java中的强制类型转换是指在Java语言中,将一个数据类型转换为另一个数据类型的过程。在这个过程中,需要遵守一定的转换规则,以避免数据的损失或错误。在这个主题中,我们将...
这一过程分为两种类型,分别是自动类型转换(隐式类型转换)和强制类型转换(显式类型转换)。在阅读了“编程语言java类型转换.pdf”的部分内容后,我们可以提炼出以下关于Java类型转换的知识点。 1. Java数据类型...
Java中的类型转换分为两大类:自动类型转换(也称为隐式类型转换)和强制类型转换(也称为显式类型转换)。本篇主要讨论自动类型转换。 #### 三、自动类型转换规则 自动类型转换是在编译时期由Java虚拟机自动完成...
对于`byte`、`short` 和 `char` 这三种类型来说,它们之间不存在自动类型转换关系,但可以通过强制类型转换实现转换。 **示例代码**: ```java short short1 = 50; byte b1 = (byte) short1; // 强制类型转换 char ...
文章目录前言golang强制类型转换类型断言类型转换指针类型转换总结引用 前言 golang是强类型语言,有强制类型转换,但是不同于Java语言所使用的强制类型转换。 golang强制类型转换 golang语言中分为类型转换(type ...
这种方法同样可能导致溢出,因为`intValue()`内部也是通过强制类型转换实现的。 ### 字符串转换 将`long`转换为`String`,然后再将`String`转换为`int`: ```java long longValue = 300000; int intValue = Integer...
Java语言中有多种类型转换,包括强制类型转换和隐式类型转换。强制类型转换可以将一种类型的变量转换成另一种类型的变量,但可能会丢失精度。在使用强制类型转换时,需要小心地处理可能的精度丢失问题。 Java语言中...
- 强制类型转换可能导致精度丢失,特别是在将double或float转换为较小的类型时。 理解并熟练应用这些转换规则对于编写Java程序至关重要。在实际编程中,合理选择数据类型并正确处理类型转换,不仅能提高代码的效率...
- **强制类型转换**:相反,从高级别类型转换为低级别类型需要使用强制类型转换,这可能会导致数据丢失(溢出)或精度下降。例如,`int i = 100; byte b = (byte) i;` - **包装类转换**:Java 提供了六个基本数据...
总结,理解Java中的类型转换机制对于编写高效、无错误的代码至关重要。自动转换简化了代码,而强制转换则允许开发者精确控制数据类型的转换过程。封装器类则为简单类型提供了面向对象的特性,扩展了它们的功能。在...
向下转型则是将父类引用转换为子类对象,需要使用强制类型转换,例如: ```java Cat cat = (Cat) animal; // 强制类型转换,需确保animal实际指向的是Cat对象 cat.catchMouse(); // Cat类特有的行为,只有在正确转换...