Java的多态性总结

1. Java的多态性总结:

(1) 首先, 要明确Child对Parent发生了方法的overload还是overwrite,根据参数类型及个数。

(2) 如果是overload,则Child继承了Parent的方法,相当于Child多加了父类的方法。

(3) 如果是overwrite, 则Child类不会有父类的该方法,而是把该方法重写了,所以该方法存在于父类中,子类只是重写了。要想调用父类的该方法,只能通过super关键字调用。
    java 的这种机制遵循一个原则: 当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。
(4) 接下来,观察方法执行时的参数类型;

(5) 然后看调用对象的声明类型和实例类型;

(6) 方法的调度采用最精确参数匹配。


2. 多态分两种:
(1) 编译时多态:编译时动态重载;
(2) 运行时多态:指一个对象可以具有多个类型,方法的覆盖
    这样对于对象而言分为:
    理解运行时多态:
    Car c = new Bus();
    Car编译时类型 编译时检查变量类型是否存在,是否有调用的方法。
    Bus运行时类型  实际运行是访问heap中的对象,调用实际的方法。
    运行时多态是由运行时类型决定的
    编译时多态是由编译时类型决定的


你可能感兴趣的:(java,C++,c,面试,C#)