多态的细节 为什么多态中,有的运行子类,有的运行父类,有的情况还是编译失败 存在于多态中, 父类 = new 子类() l 成员变量,编译时期看引用类型中,有没有这个变量,有编译成功,否则编译失败 l 成员变量,运行时期,运行的是引用变量所属的类的结果 l 非静态成员方法,编译时期看引用类型中,有没有这个方法,有编译成功,否则编译失败 l 非静态成员方法,运行时期,运行子类重写后的方法 l 静态成员变量,编译时期看引用类型中,有没有这个变量,有编译成功,否则编译失败 l 静态成员变量,运行时期,运行的是引用变量所属的类的结果 l 静态成员方法,编译时期,看引用类型中,有没有这个方法,有编译成功,否则编译失败 l 静态成员方法,运行时期,运行的是引用型变量所属的类中的静态方法 l 简单记法:除了非静态成员方法以外,编译看父类,运行看父类,只有非静态的成员方法,编译看父类,运行看子类 l 编译看左边,运行看右边 Fu f = new Zi() 非静态成员方法 l 编译看左边,运行看左边 Fu f = new Zi() 除了非静态成员方法
|