java中关于父类引用指向子类对象,多态性的问题~虚心求教

2025-06-21 14:32:30
推荐回答(5个)
回答1:

你这么去理解,用你上面第2点说明,如果父类Parent中有个炒菜的方法,里边是parent炒菜的过程和需要的材料,子类Son重写了父类中的炒菜方法,但是子类炒菜方法与parent完全不同(儿子喜欢另一种炒菜方法),那么在程序中调用p.炒菜方法时,就会调用子类的炒菜方法。
所以多态实现的是:通过父类或接口调用子类或实现类里的重写方法或者实现方法,除非继承的子类没有重写父类任何方法,否则调用的都是子类里边重写的方法

回答2:

不知道楼主是想知道有什么区别,还是想知道有什么好处(用处)?

区别就是:Parent p = new Son(),调用的是子类里重写的父类的方法;而Parent p = new Parent()调用的是自己的。

好处就是:你可以不用管子类是怎么实现的,也不用管到底有没有子类,特别是在p作为其他方法参数的时候,如:doSomething(Parent p){
p.xxx
}

当然你也可以说接口、抽象类也可以这么实现,但是各有各的好处,看你具体的应用了。

回答3:

是这样的:向上转型(以上定义,父类应用指向子类对象)只是实现多态的一种方式。该方式定义的对象,首先会调用子类的方法,前提是子类有重写;如果没有,则会调用父类方法。

回答4:

Parent p = new Son() 假设Son中重写Parent的方法A,这样 p中的A()是Son中的方法;

Parent p = new Parent() 而这样 p中的A() 是Parent中的A()方法。

回答5:

比如eat()方法只要在Animal里定义一次就可以了,不需要再每种动物对象里面都定义