「java中自动下转型」java如何向下转型
本篇文章给大家谈谈java中自动下转型,以及java如何向下转型对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
JAVA中关于向下转型
下转型就是你上转型后才能做的操作;
例如:Map map = new HashMap(); 上转型
HashMap hmap = map;下转型
一般上转型都是实现接口编程的,减少两个类之间的偶合;
下转型一般是封装好的对象在解封而已。
java 向上转型 向下转型
1.
引用a的类型是animal,是cat的父类。所以是“父类引用指向子类对象”。如果是“子类引用指向父类对象”,那应该写成
cat
a
=
new
animal();但这显然是不和逻辑的。
2.
你说的没错——“向上转型后,父类也只能调用父类已经有的方法”。但是子类如果覆盖了父类的方法,那么即使向上转型,方法的行为也表现为覆盖后的行为。这也是多态的一种体现。向上转型更多的用来体现一种编程上的“约定”。所有继承某个类或者实现某个接口的类,一定包含某个方法,这样在调用的时候,使得你也不必关系具体的实现细节,只要知道“这个类型中的某个方法能帮我完成工作”就可以了。
3.
向下转型,是“引用的类型”的变化,不是对象实例类型的变化。new什么,就是什么。不会因为向上或者向下转型而改变自己的类型。
4.
最后一个问题,不管向上还是向下转型,调用的都是实际类型中的那个方法。比如,animal
a
=
new
cat(); a.叫()。那这个叫就是cat类型实例中的“叫”方法。
java 中多态向下转型是怎么回事?
举个例子:
integer
num
=
new
integer(100);
有了自动装箱机制后,你就可以写成这样了:
integer
num
=
100;
编译器会自动将100这个int值转换成integer对象。
所以自动装箱就是java编译器在编译期间自动将原生类型转换成其对应的包装类型。
JAVA中关于自动转型的问题
float赋值的时候后面必须加f是(有区分大小写吗):
这个f必须加上,不然程序会认为是double类型,不区分大小写之分。
double赋值不需要加D,double b=12,输入一个int类型的值都没问题,它会自动转换为double类型,无大小写之分。
intfloatdouble,你记着这点,就不会错了,double能直接存float和int,float不能直接存double,需要转换,int比float,double都小。
自动转型:是你左边的类型比右边的大,所以能直接放进去。
“如图中a大于b所以就自动转型了)如果是a*b(a大于b)会自动转为浮点型,若(a小于b)那还会自动转为浮点型”,这句话你理解错误了,不是a的值比b的值大,在java里面不是比值大就是什么类型,而是谁的类型大,就是什么类型。
比如说:a*b,一个是int类型,一个是float类型,我上边说了,float类型比int类型大,你觉得你能把一个大的类型值放在小的类型值里面吗?[除非你强制转换],要么a*b就是float类型。
关于java中自动下转型和java如何向下转型的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。