「java上下转型」java中向下转型的意义在哪
本篇文章给大家谈谈java上下转型,以及java中向下转型的意义在哪对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java中的向上转型向下转型是甚么意思该如何去理解!?
- 2、java中对象的向上向下转型在开发中用于实现什么功能
- 3、java 向上转型 向下转型
- 4、在java里面的向上转型和向下转型的具体好处在哪里?
- 5、java中向上转型,向下转型,强制类型转换的原理?
java中的向上转型向下转型是甚么意思该如何去理解!?
下面是我个人看法,仅供参考向上转型指子类向父类转型或与父类型变量产生运算向下转型指父类型向子类转型举个例子Objecto=newHashMap();//变量o定义的是Object类型,实际初始化时是HashMap类型(Object是所有类的父类),属于向上转型,没有任何问题Strings=o.get(id);//会报错//这条语句,从HashMap中获得对象,赋值到String变量由于是原生的HashMap,所以里面的元素是Object类型,赋值给String变量相当于向下转型,有毛病,需要强迫类型转换Strings=(String)o.get(id);//当前条件是HashMap中元素的确是String类型
java中对象的向上向下转型在开发中用于实现什么功能
无论是上转还是下转都是为了让类的使用范围和适用范围发生变化,以便操作不同范围的变量或者方法。
1上转型是指将子类对象使用父类引用进行引用。
得:上转型对象可以操作和使用子类继承或者重写的方法。
失:上转型对象丧失了对子类新增成员变量或新增的方法的操作和使用。
2与向上转型相反,即是把父类对象转为子类对象:作用也与上转相反。
java
转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。子类和父类中定义同名的变量时,仅仅是隐藏了,变量没有多态性;而对于覆盖的方法,Java表现出多态性,会调用更具体的子类里面的方法,无论从哪里调用,无论使用什么引用类型调用。
java 向上转型 向下转型
1.
引用a的类型是animal,是cat的父类。所以是“父类引用指向子类对象”。如果是“子类引用指向父类对象”,那应该写成
cat
a
=
new
animal();但这显然是不和逻辑的。
2.
你说的没错——“向上转型后,父类也只能调用父类已经有的方法”。但是子类如果覆盖了父类的方法,那么即使向上转型,方法的行为也表现为覆盖后的行为。这也是多态的一种体现。向上转型更多的用来体现一种编程上的“约定”。所有继承某个类或者实现某个接口的类,一定包含某个方法,这样在调用的时候,使得你也不必关系具体的实现细节,只要知道“这个类型中的某个方法能帮我完成工作”就可以了。
3.
向下转型,是“引用的类型”的变化,不是对象实例类型的变化。new什么,就是什么。不会因为向上或者向下转型而改变自己的类型。
4.
最后一个问题,不管向上还是向下转型,调用的都是实际类型中的那个方法。比如,animal
a
=
new
cat(); a.叫()。那这个叫就是cat类型实例中的“叫”方法。
在java里面的向上转型和向下转型的具体好处在哪里?
java里面的向上转型和向下转型的具体好处如下:
1.转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展。
2.向上转型:子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口
向上转型时,父类指向子类引用对象会遗失除与父类对象共有的其他方法,也就是在转型过程中,子类的新有的方法都会遗失掉,在编译时,系统会提供找不到方法的错误。实例如下:
public class Animal {
public void eat(){
System.out.println("animal eatting...");
}
}
class Bird extends Animal{
public void eat(){
System.out.println("bird eatting...");
}
public void fly(){
System.out.println("bird flying...");
}
}
class Main{
public static void main(String[] args) {
Animal b=new Bird(); //向上转型
b.eat();
b.fly(); //此处提示在Animal中没有定义fly方法。
}
java中向上转型,向下转型,强制类型转换的原理?
向上或者向下转型
就要说到继承
比如有2个类
a
b
b继承a
先
b
b
=
new
b();
这个时候
a
a
=
b;
这种用法就是向上转型
使用父类的引用
引用子类对象
向上转型是自动的不需要其他操作
然后在上边的基础上
b
=
(b)a
这个就是向下转型
当用父类引用
引用子类对象
现在想不使用父类的引用
而使用子类的引用
就是向下转型
向下转型必须强制转型
必须确定对象确实是子类对象
如果是父类对象那就会报错
java上下转型的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java中向下转型的意义在哪、java上下转型的信息别忘了在本站进行查找喔。
发布于:2022-11-30,除非注明,否则均为
原创文章,转载请注明出处。