动手动脑——继承与多态
构造函数的主要作用:
在创建对象时初始化对象,为对象成员变量赋初值。构造函数是一种特殊的成员函数,它主要用于为对象分配存储空间,对数据成员进行初始化。
构造一个对象,先调用其构造方法,来初始化其成员函数和成员变量。
子类拥有父的成员变量和成员方法,如果不调用,则从父类继承而来的成员变量和成员方法得不到正确的初始化。
不能反过来调用也是这个原因,因为父类根本不知道子类有神魔变量而且这样一来子类也得不到初始化的父类变量,导致程序运行出错!
调用时:先子类后父类,输出时先父类后子类。
当父类中的方法被覆盖的时候,要想访问父类中方法就要使用super。。
多态:
运行结果:
结论:子类父类要有一样的方法才能实现这样的赋值,子类可以赋值给父类,父类不可以赋值给子类,因为子类继承于父类,是父类的衍生类
当子类与父类有相同的方法时,让父类变量引用一个子类对象时,以对象的类型来调用,这是面向对象多态的特征的具体体现
覆盖:如果子类有重写了父类的方法,但是又想使用父类的方法就必须用super 调用,直接调用不带super 的话就是使用了子类重写的方法
注意:当子类被当作覆盖来使用时,通过子类访问的字段是父类的。