(1)写出程序的运行结果 class A { double f (double x, double y) { return x + y; } static int g(int n) { return n * n; } } class B extends A { double f(double x, double y) { double m = super.f(x, y); return m + x * y; } static int g(int n) { int m = A.g(n); return m + n; } } public class E { public static void main(String[] args) { B b = new B(); System.out.println(b.f(6.0,12.0)); System.out.println(b.g(8)); A a = new B(); System.out.println(a.f(6.0,12.0)); System.out.println(a.g(8)); } } 结果: (2)阅读下面程序,给出程序的(1)、(2)和(3)的输出结果,并进行恰当的说明。 public class Student { private String name; public Student(String na) { name = na; } public String getName() { return name; } public void setName(String na) { name = na; } public static void main(String[] args) { Student s1 = new Student("Tom"); System.out.println(s1.getName()); (1) Student s2 = s1; s2.setName("Bob"); System.out.println(s1.getName()); (2) System.out.println(s2.getName()); (3) } }
时间: 2024-02-14 22:08:19 浏览: 131
(1) 程序的输出结果为:
```
78.0
64
78.0
64
```
(2) 第一行输出结果为Tom,表示对象s1的name属性为Tom。
(3) 第二行输出结果为Bob,表示对象s2的name属性被改为了Bob,因为s1和s2指向同一个对象,所以s1的name属性也被改为了Bob。第三行输出结果也为Bob。
相关问题
4.下列代码运行的结果是( class A double f(double x,double y) ( return x+y; ] class B extends A t double f(int x,int y) return x*y; ) double f(double x,double y) f return y-x; 〕 public class Test2 public static void main(String args[])( B b=new BO; System.out.println(b.f(5,8)); System.out.println(b.f(8.0,12.0));)
这段代码会输出以下结果:
- 40
- 4.0
解释:
- 第一次调用b.f(5,8)时,会调用B类中的f方法,因为参数是int类型,匹配了B类中的int版本的f方法。所以会输出5*8=40。
- 第二次调用b.f(8.0,12.0)时,会调用A类中的f方法,因为参数是double类型,B类中没有double版本的f方法,所以会调用A类中的double版本的f方法。该方法会返回12.0-8.0=4.0。
运行结果class A { double f(double x, double y) { return x+y; static int g(int n) { return n *n; } } class B extends A { double f(double x, double y) { double m =super.f(x, y); return m + x* y; } static int g(int n) { intm=A.g(n); return m+n;}} public class e { public static void main(string args[]){ Bb=newB(); System.out.println(b.f(5.0,5.0)); // 【代码1】 System.out.println bq(5);代码24 a = new B(); System.out.println(a.f(10.0,10.0)); // 【代码3】 System.out.println(a.g(5));// 【代码4】
运行结果应该是:
```
30.0
35
110.0
25
```
解析如下:
1. 第一行输出的是 `b.f(5.0,5.0)` 的结果,即先调用父类 A 的 f 方法求和,再加上 x * y,即 5.0 * 5.0 = 25.0,所以结果为 30.0。
2. 第二行输出的是 `B.g(5)` 的结果,即先调用父类 A 的 g 方法计算 n 的平方,再加上 n,即 5 * 5 + 5 = 30,所以结果为 35。
3. 第三行输出的是 `a.f(10.0,10.0)` 的结果,由于 a 是 B 类型的对象,所以会调用 B 类中重写的 f 方法,先调用父类 A 的 f 方法求和,再加上 x * y,即 10.0 + 10.0 = 20.0,再加上 10.0 * 10.0 = 100.0,所以结果为 120.0。
4. 第四行输出的是 `a.g(5)` 的结果,由于 a 是 B 类型的对象,但是调用的是父类 A 中的静态方法 g,所以结果为 5 * 5 = 25。
阅读全文