大家说说最后输出的是什么。。(简单)
大家说说最后输出的是什么。。
如果是说a=3的话请说下理由,谢谢..
class Foo {
public int a;
public Foo() { a = 3; }
public void addFive() { a += 5; }
}
class Bar extends Foo {
public int a;
public Bar() { a = 8; }
public void addFive() { a +=5; }
}
public class Test{
public static void main(String[] args){
Foo foo = new Bar();
foo.addFive();
System.out.println( "value: "+ foo.a);
}
}
------解决方案--------------------多态中属性遮盖的问题
尽管子类调用了构造函数和后面的函数,但都是对子类中的这个a做的操作
但在输出函数中使用多态调用的还是父类的那个a的值,所以还是3
------解决方案--------------------这里声明的是以BAR为实例的 FOO对象.
子类覆盖父类只对方法覆盖...不覆盖参数
因此这里执行addFive()没有更改父类的参数a,只是修改了bar实例中的a