标题: java 继承问题 [打印本页] 作者: s476596497 时间: 2014-1-20 10:45 标题: java 继承问题 public class TEST22 {
public static void main(String args[]){
Foo f = new Bar();
f.addFive();
System.out.println(f.a);
}
}
class Foo {
public int a = 3;
public void addFive() {
a += 5; System.out.print("f "); }
}
class Bar extends Foo {
public int a = 8;
public void addFive() {
this.a += 5; System.out.print("b " ); }
}
为什么输出是 “b 3”?
这程序的运行顺序究竟是怎样的?
Bar f = new Bar()或者Foo f = new Foo()我知道,但是Foo f = new Bar()会怎样运行呢?把Bar类转换成Foo类?那参数和函数会运行哪个?作者: 黄晓鑫 时间: 2014-1-20 10:52
具体分析 Foo f = new Bar(); 父类类型指向子类对象 f.addFive();方法编译时看右边 打印了一个b f.a而变量是编译时看左边 左边是父类类型所以打印了一个3 父类的a变量赋值是3作者: dapeng111 时间: 2014-1-20 11:30 本帖最后由 dapeng111 于 2014-1-20 11:31 编辑