当变量的编译时类型和运行时类型不同时,通过该变量访问它引用的对象的实例变量时,该实例变量的值由声明该变量的类型决定。
但是通过该变量调用它引用的对象的实例方法时,该方法的行为将由它实际所引用的对象来决定。
子类继承父类重写父类的方法时,就意味着子类里定义的方法彻底覆盖了父类里面定义的同名方法,系统将不可能把父类的方法转移到子类里面去。
但是对于实例变量则不存在这样的现象,即时子类实例变量的命名与父类一样,这个实例变量依然不可能完全覆盖父类的实例变量。
类变量即静态变量,定义在类体里面,初始化阶段有两个,1是定义是初始化、2是静态代码块初始化。类变量属于类本身。
实例变量,定义在类体里面,初始化阶段有三个,1、定义使初始化、2非静态代码块、3构造函数初始化。实例变量属于java对象。