1.理解多态性
具体来讲,是对象的多种形态,可以是man,woman等
父类的引用即p2
子类的对象即 Man;
声明的是变量 Person p2
右边是对象(man,或者woman,只要是person其他子类都可以)体现出了多种形态。
2.何为多态性
定义一个父类的功能,通过子类来实现,在用的时候只通过父类引用来调用,将具体的方法封装在子类中。
执行man中特有的方法时
发现执行
会报错:
说明p2只能调用person中声明过的方法。
这就是所谓 向下转型,执行的时候是子类重写的方法,
编译的时候是person
声明是person类型,
当我们点击eat时,转到父类型里面。
没有继承就没有多态性(因为多态一定涉及到子类和父类)
经典面试题:多态是 编译时行为 还是 运行时行为?
多态是运行时行为:
因为程序只能在程序运行的时候才能决定调用哪个对象的方法