java中向上转型和向下转型有何用途

比如Personp=newStudent();就是典型的向上转型,对象p只能使用Person中的变量和函数。那么我想知道有何意义?为什么不直接Personp=newPer... 比如 Person p = new Student();就是典型的向上转型,对象p只能使用Person中的变量和函数。那么我想知道有何意义?为什么不直接Person p = new Person()?我看顶多在复写函数的时候两者有些区别,其他我觉得没啥区别。求个解释。不知道这个转型在安卓开发中用途是否广泛?如果用途一般,那么我就不深入研究了 谢谢 展开
 我来答
骤雨浓
2015-08-08 · TA获得超过228个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:62.1万
展开全部
无论是上转还是下转都是为了让类的使用范围和适用范围发生变化,以便操作不同范围的变量或者方法。

1上转型是指将子类对象使用父类引用进行引用。
得:上转型对象可以操作和使用子类继承或者重写的方法。
失:上转型对象丧失了对子类新增成员变量或新增的方法的操作和使用。
2与向上转型相反,即是把父类对象转为子类对象:作用也与上转相反。

java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。子类和父类中定义同名的变量时,仅仅是隐藏了,变量没有多态性;而对于覆盖的方法,Java表现出多态性,会调用更具体的子类里面的方法,无论从哪里调用,无论使用什么引用类型调用。
ivan_dt
2013-02-07 · 超过10用户采纳过TA的回答
知道答主
回答量:39
采纳率:100%
帮助的人:21.9万
展开全部
Person 可以表示为一个抽象的东西 就是人。比如说人可以唱歌, 就好比Person类中有一个sing方法.
那么这个抽象的类(Person 人)可以具体到两类或者更多类 比如 男人,女人 。
Man extends Person 或者 Woman extends Person
那么男人 还有 女人 分别实现sing方法。 因为男人和女人唱歌总还是有区别的嘛。

当 Person p = new Man(); p.sing(); 这个时候就是调用男人唱歌的sing方法
当 Person p = new Woman(); p.sing(); 这个时候就是调用女人的唱歌的sing方法
这样其实就是一个java的继承,多态. 利于程序扩展. 你需要理解这种设计方式,会让你写出更易维护,简洁的代码。
追问
比如Persong类中定义只有两个变量 String a = "国歌" String  b = "共青团团歌" 但是在Man类中不仅继承有国歌 团歌 还有一个自己的String c = "国际歌"。在Person 中sing()函数中打印自己会唱的歌,在Man中sing()函数中也打印自己会唱的歌。那么用向上转型就会打印出国歌,共青团团歌和一个NULL,那么如此使用为哪般?实在不理解,跪求实际开发中用途案例。以及在安卓开发中,转型使用是否频繁,谢谢
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
热情的十三厘米
2018-11-04
知道答主
回答量:1
采纳率:0%
帮助的人:816
展开全部
一般实际工作中person都会是一个接口,而接口不能new对象,就无法调用方法,这时候就要向上转型,再调用方法,而且只能调用接口里的方法,而不能调用实现类方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
crazy_bear007
2013-02-07 · 超过20用户采纳过TA的回答
知道答主
回答量:96
采纳率:0%
帮助的人:50.4万
展开全部
为了多态,主要是参数多态和返回类型多态。省很多代码的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陈家0大少
2013-07-25 · 超过14用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:47.9万
展开全部
你是学mars老师的视频吧?面向对象的感觉慢慢就会懂了,不用着急,到了你实际开发的时候你觉得这样写代码很麻烦啊多重复什么的,你就会去研究面向对象啦!慢慢就成长起来了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式