您的位置 首页 java

Java编程中,如果类B extends A,可以 B=(B)A 吗?

首先说说什么是类型转换,用简单的话来说,类型转换是将一个类型转换为另一个类型的过程,这里的类型可以是一个类,也可以是一个接口。在 Java 编程中,类型转换可以应用于基本数据类型,也可以应用于引用类型。

当转换基本数据类型的时候,可以分成低精度转高精度,和高精度转低精度。

 低精度 -> 高精度
byte -> short -> char -> int -> long -> float -> double
高精度 -> 低精度
double -> float -> long -> int -> char -> short -> byte  

如果转换是从精度低的类型到精度高的类型,它被称为隐性转换或者自动转换。比如说我们可以把一个byte变量值直接赋给一个int变量,编译器会进行自动类型转换。如果转换是从精度高的类型到精度低的类型的时候,被叫做显性转换或者手动转换,就是说需要加强制转换符。例如,把double变量赋值给int,就需要加强制转换赋(int)。这里要注意,每当我们做显性转换的时候,都要十分小心,因为精确度由高到低的转换Java编译器并不会报错,但是结果有可能并不是期待的结果。

接下来说一说引用类型转换,根据Java编程语言的规则,一般情况,引用类型只有存在父子关系的类或者接口才能彼此转换。如果试图将两个不相关的类之间进行类型转换,会导致编译错误。这里说一般,是因为有一些特殊情况,比如我们可以适合的 字符串 转转换成别的类型。

如果是转换有父子继承关系的类或者接口的时候的时候,我们可以将对象可以从子类转换为父类,而且不需要显式转换。

运行正确

ClassCastException异常

另一方面,当对象从父类转换为子类的时候,则需要显式转换,但要注意,虽然超类转子类不会产生编译错误,但如果对象并不是子类的实例,那么运行时也会出现异常ClassCastException。

文章来源:智云一二三科技

文章标题:Java编程中,如果类B extends A,可以 B=(B)A 吗?

文章地址:https://www.zhihuclub.com/171359.shtml

关于作者: 智云科技

热门文章

网站地图