有以下源程序,分别在不同的包中,请写出程序运行结果: package dir1; public class A{ public int i=1; private int j=2; protected static int k=6; public A(int i, int j){ i=i; this.j=j; } public float f(int x,int y) { return x+y+j; } protected double g(int i){ return this.i+i; } public int h(int n) { k+=n; return k; } } package dir2; import dir1.A; class B extends A{ int i=3; public B(){ super(3,4); } public double g(int m){ return super.g(m)+i; } public float f(int x,int y) { return x+y; } } public class Test{ public static void main(String[] args) { A a = new A(5,6); B b1=new B(); System.out.println(b1.g(2)); System.out.println(b1.h(3)); a=b1; System.out.println(a.f(1, 2)); B b2=new B(); System.out.println(b2.h(3)); } }
时间: 2023-05-22 12:05:03 浏览: 131
程序运行结果为:
10.0
3
2.0
3
注释:
- 第1次输出为 b1.g(2),b1 是 B 的实例化对象,调用 g 方法,输出的是 2 * 1 + 3 = 5.0。
- 第2次输出为 b1.h(3),b1 是 B 的实例化对象,使用了 A 中的 h 方法,将 j 的值赋为 3,然后返回 k 的值,即 3。
- 第3次输出为 a.f(1, 2),a 是 A 类型的变量,但是其实际指向的是 B 的实例化对象 b1,调用 f 方法,输出的是 1 * 2 = 2.0。
- 第4次输出为 b2.h(3),b2 是 B 的实例化对象,使用了 A 中的 h 方法,将 k 的值赋为 3,然后返回 k 的值,即 3。
阅读全文