java多态问题的讨论 谢谢

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

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

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

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

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