「java会自动向下转型」java自动向上转型
今天给各位分享java会自动向下转型的知识,其中也会对java自动向上转型进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java向下转型和向下转型是怎么一回事?请高人指点一下,谢谢!!
- 2、java 中多态向下转型是怎么回事?
- 3、java 向上转型 向下转型
- 4、java中向上转型,向下转型,强制类型转换的原理?
- 5、如何理解java中的向下转型
java向下转型和向下转型是怎么一回事?请高人指点一下,谢谢!!
说白了就是变大变小变大,你当然愿意了,肯定不用强制你变小,你就有点不情愿了,就需要强制你向上转型也称装箱向下转型称为拆箱补充: (一)向上转型(1)定义: 把对某个对象的引用视为对其基类引用的做法被称为“向上转型”。
这主要是由于子类的对象可以看成是基类的对象这原因而得来的,也就是具有is-a关系。比如:
Useful useful = new MoreUseful();//右边是一个子类的对象,而左边是一个父类类型
//的变量,指向右边的子类对象。(2)基类可以接收发给导出类的任何消息,因为二者有完全相同的接口,我们只需要从导出类向上转型,永远不需要知道正在处理的对象的确切类型,这也就是多态性决定的。利用多态性,具有同样方法名和方法特征的方法根据调用方法的对象的类型,可以产生不同的动作,这极大地增加了程序员的表达能力。(1)向下转型概述继承可以确保所有的子类类具有基类的接口,且绝对不会少。那么子类除了有父类的方法,也可以有自己的额外的新方法(这些方法是基类所没有的),那么一旦向上转型,就不能调用子类中的新方法,那么能不能用一种方式调用这些新方法呢?当然有了,这时候就需要向下转型。(2)向下转型将超类的引用强制转换为子类类型就叫做向下转型。注意:将超类的引用赋给为子类类型的变量(没有进行显示地强制转换)是一个编译错误。总之:向下转型时,对象只能强制转换为其本身类型或者其超类类型。
java 中多态向下转型是怎么回事?
举个例子:
integer
num
=
new
integer(100);
有了自动装箱机制后,你就可以写成这样了:
integer
num
=
100;
编译器会自动将100这个int值转换成integer对象。
所以自动装箱就是java编译器在编译期间自动将原生类型转换成其对应的包装类型。
java 向上转型 向下转型
1.
引用a的类型是animal,是cat的父类。所以是“父类引用指向子类对象”。如果是“子类引用指向父类对象”,那应该写成
cat
a
=
new
animal();但这显然是不和逻辑的。
2.
你说的没错——“向上转型后,父类也只能调用父类已经有的方法”。但是子类如果覆盖了父类的方法,那么即使向上转型,方法的行为也表现为覆盖后的行为。这也是多态的一种体现。向上转型更多的用来体现一种编程上的“约定”。所有继承某个类或者实现某个接口的类,一定包含某个方法,这样在调用的时候,使得你也不必关系具体的实现细节,只要知道“这个类型中的某个方法能帮我完成工作”就可以了。
3.
向下转型,是“引用的类型”的变化,不是对象实例类型的变化。new什么,就是什么。不会因为向上或者向下转型而改变自己的类型。
4.
最后一个问题,不管向上还是向下转型,调用的都是实际类型中的那个方法。比如,animal
a
=
new
cat(); a.叫()。那这个叫就是cat类型实例中的“叫”方法。
java中向上转型,向下转型,强制类型转换的原理?
向上或者向下转型
就要说到继承
比如有2个类
a
b
b继承a
先
b
b
=
new
b();
这个时候
a
a
=
b;
这种用法就是向上转型
使用父类的引用
引用子类对象
向上转型是自动的不需要其他操作
然后在上边的基础上
b
=
(b)a
这个就是向下转型
当用父类引用
引用子类对象
现在想不使用父类的引用
而使用子类的引用
就是向下转型
向下转型必须强制转型
必须确定对象确实是子类对象
如果是父类对象那就会报错
如何理解java中的向下转型
Java里只有两种,一种是向上转型,一种是向下转型,其实原理都是一样的.
比如
人(People)
继承了
动物
这个类(Animal)
则向上转型代表
把子类赋值给父类
Animal
a
=
new
People();
向下转型则将父类的引用还原成实际的子类
People
p
=
(People)
a;
但是向下转型一定要是实际的子类,否则会报错.
比如现在多了一个
猴子(Monkey)
类
继承
动物类
之前
a
是通过
new
People()
得来的
但是向下转型的时候是不能转为猴子的,否则会报类转换异常.
如
Monkey
m
=
(Monkey)
a;
这样是会报错的.
用我们的语言其实也好理解,比如
人是属于动物,但是人不属于猴子,反之亦然,猴子也不属于人,但是是动物
java会自动向下转型的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java自动向上转型、java会自动向下转型的信息别忘了在本站进行查找喔。
发布于:2022-12-23,除非注明,否则均为
原创文章,转载请注明出处。