22.Given:
10. public class Foo {
11. public int a;
12. public Foo() { a = 3; }
13. public void addFive() { a += 5; }
14. }
and:
20. public class Bar extends Foo {
21. public int a;
22. public Bar() { a = 8; }
23. public void addFive() { this.a +=5; }
24. }
invoked with:
30. Foo foo = new Bar();
31. foo.addFive();
32. System.out.println( " Value: " + foo.a);
结果是什么?
A. Value: 3
B. Value: 8
C. Value: 13
D. Compilation fails.
E. The code runs with no output.
F. An exception is thrown at runtime.
10. public class Foo {
11. public int a;
12. public Foo() { a = 3; }
13. public void addFive() { a += 5; }
14. }
and:
20. public class Bar extends Foo {
21. public int a;
22. public Bar() { a = 8; }
23. public void addFive() { this.a +=5; }
24. }
invoked with:
30. Foo foo = new Bar();
31. foo.addFive();
32. System.out.println( " Value: " + foo.a);
结果是什么?
A. Value: 3
B. Value: 8
C. Value: 13
D. Compilation fails.
E. The code runs with no output.
F. An exception is thrown at runtime.
class Fu
{
public int a;
public Fu(){
a=3;
System.out.println("父类的构造方法Fu()");
}
public void addValue(){
System.out.println("父类的构造方法addValue()");
a =a+3;
}
public int getA(){
System.out.println("父类的方法getA()");
return this.a;
}
};
class Zi extends Fu
{
public int a;
public Zi(){
a = 8;
System.out.println("子类的构造方法Zi()");
}
public void addValue(){
this.a=a+5;
System.out.println("子类的构造方法addValue()");
}
public int getA(){
System.out.println("子类的方法getA()");
return this.a;
}
};public class Csdndemo01
{
public static void main(String[] args)
{
Fu f = new Zi();
f.addValue();
System.out.println("a="+f.getB());
}
}(1)lz的问题就相当于把父类中的得到属性的方法改为getB().然后再分析就是了,这下你就明白二楼的意思了。