青瓜吃蛙
2019-12-29 21:33
采纳率: 50%
浏览 590
已采纳

多态的意义到底是什么?

假设B类继承A类。
在使用父类引用指向子类对象的时候,即A obj=new B();
B中有而A中没有的方法是不可以被对象obj调用的。
但是如果B extends A
B obj2=new B();
那么A和B中所有的方法都可以被obj2调用,而且在B中重写的方法也可以把A中的方法覆盖掉。
这样不是比父类引用指向子类对象更好吗?不太明白,求教!!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • blownewbee 2019-12-29 22:48
    已采纳

    在实际开发中

    A代表的是系统类库,提前编写好的,里面的源代码不能修改

    B代表的是程序员编写的,派生类里实现代码的自定义,以A类型传入类库调用。

    系统类库只能看到A,没办法提前知道B的存在,更不用说调用它了。

    点赞 打赏 评论
  • 王能 2019-12-30 14:55

    类A,方法doSomething,变量a=1
    类B继承A,重写doSomething
    类C继承A,重写doSomething

    继承是代码的重用,就是B类也有变量a=1,这时类之间并不能转换,没有多态B是不能强转为A的
    多态:B本来是B但你可以转成A,C本来是C你也可以转成A,这就是多态。虽然看上去很sb,但如果程序不支持多态的话,就算你继承了A强转也会报错。

    你的疑问在于你把多态也当成继承了,想当然的认为继承就可以强转,但实际上不是这样的

    问答版主就是牛,从现在起只回论坛,不在踏入问答半步

    点赞 打赏 评论

相关推荐 更多相似问题