day10-多态

一、多态的基本理解与运用技巧

前提条件:继承 、重写父类方法 、父类引用指向子类对象

  1. 概念:多态是指父类引用指向子类对象。比如有Animal这个父类,下面有Dog子类,那么创建对象。Animal a =new Dog().

  2. 多态中成员变量的调用。

    • 首先要知道成员变量不涉及覆盖的说法,那么就很简单的知道了,父类调用成员变量,就是父类自己的,无论静态还是非静态的,都跟子类的没有关系。

  3. 多态中成员函数的调用 (基本是子类都覆盖了父类的方法,还有与父类同名字的成员变量,这时候很迷惑)

    • 非静态成员函数:编译时看左边,运行时看右边

      • 在编译时候:如果左边的父类没有该函数,那么就编译失败。

      • 在运行时候:运行的时候是找右边的子类对象中对应的该方法(因为子类覆盖了父类的同名方法)。

      简单说:编译看 = 的左边,运行看 = 的右边

    • 静态成员函数:静态方法其实不涉及多态的。直接用类名调用即可。所以编译和运行都只看左边。

      简单说:编译和运行都参考 = 的左边。

  4. 多态的好处:

    • 可以提高程序的扩展性,只需要在关注父类基本的通用功能,屏蔽各个子类之间的差异性,易于程序的维护和扩展。

    • 多态存在向上转型跟向下转型,当一个子类中有自己特有的方法时候,父类是无法调用到的,多态时候的父类引用指向子类对象时候也是无法之间调用的,但是可以通过向下转型成子类,在来调用,更加灵活。要用子类就转成子类对象,用父类就向上转成父类对象。

猜你喜欢

转载自www.cnblogs.com/zhiai007/p/9367904.html