子类 son 父类father。
1.先初始化父类的静态变量或静态代码块。不分先后,以定义的先后顺序为准
2.初始化子类的静态变量或静态代码块
3.初始化父类的非静态变量,执行构造函数
4.初始化子类的非静态变量,执行构造函数。
比如 Father fa = new son() 向上转型,不用强制类型转换
fa 调用的成员变量是父类的。 如果想调用子类的成员变量,可以封装一个函数,这个里面返回成功变量的值即可
fa 调用的函数是子类的。 其实调用的是子类重写父类的函数。 如果父类没有此函数会报错。
son s = (son)fa,这样使用也可以。父类的引用指向了子类
Father f2 = new Father();
Son s2 = (Son)f2; // 出错,子类引用不能指向父类对象
好处:在父类有多个子类时,利用向上转型减少重复代码量