为了账号安全,请及时绑定邮箱和手机立即绑定

请大神帮我解答一下向上造型!

请大神帮我解答一下向上造型!

爱技术的Wade粉儿 2016-03-20 12:32:20
 A a= new B(); A是父类,B是子类。这就是一个声明了a的A类引用数据类型指向了new一个的B类对象。  他的意义是什么呢,是把B属性和方法赋予A了。还是把A的赋予B了呢? 
查看完整描述

7 回答

?
rookie2maven

TA贡献278条经验 获得超76个赞

只是将子类对象声明为父类类型,就跟你跟你父亲姓一样,在面向接口编程就会看到它的好处。


查看完整回答
反对 回复 2016-03-23
?
qq_灰色边界_0

TA贡献5条经验 获得超1个赞

这不是属性赋予,而是将子类对象当作父类对象使用,是java多态的示例。该实例可以调用父类中的所有方法,却不能调用子类特有的方法。

查看完整回答
反对 回复 2016-03-22
?
HansonQ

TA贡献223条经验 获得超56个赞

这个应该是多态性的概念 记住一句话就好了 父类的引用a指向了子类B。

查看完整回答
反对 回复 2016-03-21
?
weibo_慕容2566259

TA贡献4条经验 获得超2个赞


一个是编译时的类型,一个是执行时的类型,通过这种方法实现了多态

查看完整回答
反对 回复 2016-03-21
?
Xx_0000_xX

TA贡献3条经验 获得超0个赞

这句代码的意思是用子类(B)来实例化父类对象(a),是JAVA的多态性,没有赋予不赋予的情况,就是一个对象的实例化

查看完整回答
反对 回复 2016-03-20
?
了不了之

TA贡献1条经验 获得超0个赞

这个问题是面向对象程序设计中的多态性, 

在父类A与子类B之间, 如果对B并没有特别的要求, 所要用到的B类的方法都是从A类继承重写过来的, 

我们就可以把B类的一个实例C向上转型看做A类的一个实例, 你学过继承应该知道, 继承关系可以说是"是一个"的关系, 

而面向对象编程在编译的时候是只对方法的参数和返回值进行检查的, 而并不确定执行的确切代码,

被调用的代码只有在运行期才确定, 此时的实例C虽然是父类A的实例, 调用的方法确实他本身B类里的重写方法,

因而,当不同的实例被调用相同的方法, 都会执行他本身重写的方法, 给予不同的响应, 这就是向上转型;


查看完整回答
反对 回复 2016-03-20
?
一条小咸鱼

TA贡献457条经验 获得超255个赞

多态性

查看完整回答
反对 回复 2016-03-20
  • 7 回答
  • 0 关注
  • 2269 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信