public class Test4 { 2 public static void main(String[] args){ 3 Son son = new Son(); 4 son.minusOne(); 5 System.out.println(son.testValue); 6 System.out.println(son.getSuperTestValue()); 7 son.plusOne(); 8 System.out.println(son.testValue); 9 System.out.println(son.getSuperTestValue()); 10 } 11 } 12 class Father{ 13 int testValue = 100; 14 public void minusOne(){ 15 this.testValue--; 16 } 17 } 18 class Son extends Father{ 19 int testValue = 0; 20 public void plusOne(){ 21 testValue++; 22 } 23 public int getSuperTestValue(){ 24 return super.testValue; 25 } 26 }
结果为 0 99 1 99
所以,当使用子类对象调用方法使用同名变量,是按照方法来判断使用哪一个变量,调用父类的方法,使用的是父类中的变量,调用子类的方法,使用的是子类中的变量
本文通过一个具体的Java示例程序展示了在继承关系中,子类对象如何调用父类方法及子类覆盖父类变量的行为。关键在于理解当使用子类对象调用方法时,如果涉及到同名变量,则会根据所调用方法的归属来决定使用哪个变量:调用父类的方法则使用父类中的变量;调用子类的方法则使用子类中的变量。

454

被折叠的 条评论
为什么被折叠?



