为什么输出结果是e 3
e:父类指向子类
3:这是为什么?求解作者: 高铭 时间: 2012-3-31 12:11
第二行代码
public int a = 3;
把修饰符public去掉就可以了
如果不去掉,打印的就是父类中a的值
去掉就子类方法覆盖父类方法addFive();执行子类中代码public int a = 8;
11. public void addFive(){
12. this.a +=5;
作者: 鲍亚坤 时间: 2012-3-31 12:30
koma501 发表于 2012-3-31 12:11
第二行代码
public int a = 3;
把修饰符public去掉就可以了
不行。去了也是e 3作者: 李震 李震 李震 时间: 2012-3-31 12:33
因为你重写了父类的方法(这是一种多态的表现),所以调用的是子类的方法.所以执行类容的是你子类的内容。
Foo f = new Exam01();
. f.addFive();
System.out.println(f.a);//而你f.a指向的父类的属性。