java多态问题的讨论 谢谢

java多态中 父类的引用指向子类对象 可是如果只是子类的引用指向子类对象 不是也能调用父类、子类的方法吗 为什么要让 父类的引用指向子类对象?

4个回答

你可以搜一下面向抽象编码这个概念,本质上来说,变量定义的类型是父类类型还是子类类型,只要能满足你的功能需求,都是一样的效果的。
但是,如果编程中,遵循这个原则,将引用变量定义为抽象类型(即父类类型的话),那么你的代码就更容易扩展和维护了。
举个例子,比如你定义了一个UserService 接口类型,它的一种实现类为UserServiceImp,还有UserAction类,它关联一个用户服务类型,如果你定义为抽象类型UserService,那么你的UserAction类中对UserService的操作,只跟这个顶层父类的定义有关,此处并不关心它具体是哪一种子类实现。你可以对UserService有N种实现,然后在自己需要的时候传递任意一种子类类型,但是这个UserAction类不需要作任何改变。
但是如果你在UserAction定义中定义是子类类型,一旦你要变换另一种实现,你这个UserAction中所有用到这个子类类型的地方可能也会根据需求进行修正。面向抽象编程,可以更容易扩展。
常见的就是JDBC对不同数据库的支持,抽象父类包含数据库访问公共的操作,而不同数据库实现又不同,但是引用端只需要引用抽象类型就够了,然后由客户端按自己需求传递对应的子类实现类型。

这个问题不是提过吗,怎么又提一遍呢?

qq_33891868
qq_33891868 回复毕小宝: 我想知道 父类引用指向子类对象 和 子类引用指向子类对象的区别
接近 4 年之前 回复

比如Parent是父类,那么定义Parent p = new Son()和Son s=new Son()。都是可以的。s是Son类,而p经过强转也会是son类

qq_29427235
小虾飘飘 回复qq_33891868: 父类的引用只可以调用父类有的方法吧,如果子类新添加了方法,那么父类是不可以用的吧
接近 4 年之前 回复
qq_33891868
qq_33891868 回复马培文: 那父类引用指向子类对象 和 子类引用指向子类对象有什么区别?
接近 4 年之前 回复

父类引用指向子类对象和子类引用指向子类对象有什么区别?

ChengKuanChi
Cheng Kwun Kei 如果子类当中有父类当中没有的方法,那父类引用指向子类对象那不就出错了吗
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问