class B { int n = 1; void disp() { System.out.print(n); } } class C extends B { int n = 2; void disp() { super.disp(); System.out.print(super.n); System.out.print(n); } public static void main(String[] args) { (new C()).disp(); } };
时间: 2024-04-28 07:19:34 浏览: 28
这段代码的执行结果是什么?
答案是:1 1 2
解析:
- 创建一个C类的对象,调用它的disp()方法。
- 在disp()方法中,首先调用了父类B的disp()方法,输出n的值,此时n的值为1。
- 然后输出super.n的值,super表示调用父类中的成员,此时父类B的n的值为1。
- 最后输出n的值,此时C类中的n的值为2。
- 因此,最终输出结果为1 1 2。
相关问题
class Cla{ int n = 1; Cla(int n){ this.n = n; System.out.print(this.n); } } class Clb extends Cla{ int n = 2; Clb(int n) { this.n = n; System.out.print(n); } public static void main(String[] args) { Cla a = new Clb(5); } }
这段代码的输出结果是 `5`。
首先,在 `Cla` 类中定义了一个实例变量 `n`,并在构造方法中输出其值。
然后,在 `Clb` 类中定义了一个实例变量 `n`,并在构造方法中输出 `n` 的值。
在 `main()` 方法中,创建了一个 `Clb` 类的对象 `a`,由于 `Clb` 类继承了 `Cla` 类,因此在创建 `Clb` 对象时,会首先调用 `Cla` 类的构造方法。在 `Cla` 类的构造方法中,输出了 `this.n` 的值,即为 `5`。
因此,最终的输出结果是 `5`。
class Cla{ int n = 1; Cla(int n){ this.n = n; System.out.print(this.n); } } class Clb extends Cla{ int n = 2; Clb(int n) { this.n = n; System.out.print(n); } public static void main(String[] args) { Cla a = new Clb(5); } }解释代码并说明结果
这段代码定义了两个类`Cla`和`Clb`,其中`Clb`继承自`Cla`。`Cla`类中定义了一个实例变量`n`,并在构造函数中对其进行初始化,并输出`n`的值。`Clb`类中也定义了一个实例变量`n`,并在构造函数中对其进行初始化,并输出`n`的值。
在`main`方法中,创建了一个`Cla`类型的变量`a`,并将其初始化为`new Clb(5)`。由于`Clb`是`Cla`的子类,因此创建`Clb`对象时会先调用`Cla`类的构造函数,输出`5`。接着会调用`Clb`类的构造函数,并输出`5`。
因此,程序的输出结果为`55`。
阅读全文