为什么运行结果是100

 

很正常呀,父类和子类的变量是同时存在的,即使是同名。子类中看到的是子类的变量,父类中看到的是父类中的变量。它们互相隐藏,而同名的方法则是实实在在的覆盖(重写)。
如Animal d1 = new Dog();
d1即是一个Animal的对象,也是一个Dog的对象,那么调用方法时,是根据对象的实际类型调用的,实际类型是Dog,所以永远调用子类的方法。
而访问成员变量就不同了,它是Animal时,访问的是父类的成员变量,转型为Dog的话,访问的就是子类的成员变量了

子类继承了父类,所以能调用方法。 父类对象指向子类引用,这是多态。 成员变量会用父类的。方法会用子类重写的

因为执行父类的get方法 就是100啊