多态的意义到底是什么?
问题描述:
假设B类继承A类。
在使用父类引用指向子类对象的时候,即A obj=new B();
B中有而A中没有的方法是不可以被对象obj调用的。
但是如果B extends A
B obj2=new B();
那么A和B中所有的方法都可以被obj2调用,而且在B中重写的方法也可以把A中的方法覆盖掉。
这样不是比父类引用指向子类对象更好吗?不太明白,求教!!
答
在实际开发中
A代表的是系统类库,提前编写好的,里面的源代码不能修改
B代表的是程序员编写的,派生类里实现代码的自定义,以A类型传入类库调用。
系统类库只能看到A,没办法提前知道B的存在,更不用说调用它了。
答
类A,方法doSomething,变量a=1
类B继承A,重写doSomething
类C继承A,重写doSomething
继承是代码的重用,就是B类也有变量a=1,这时类之间并不能转换,没有多态B是不能强转为A的
多态:B本来是B但你可以转成A,C本来是C你也可以转成A,这就是多态。虽然看上去很sb,但如果程序不支持多态的话,就算你继承了A强转也会报错。
你的疑问在于你把多态也当成继承了,想当然的认为继承就可以强转,但实际上不是这样的
问答版主就是牛,从现在起只回论坛,不在踏入问答半步