求java大神,求解

读程序:

1、import java.io.* ;

public class abc

{

public static void main(String args[ ])

{

System.out.println("a="+a+"\nb="+b);

}

}

class SubClass extends SuperClass

{ int c;

SubClass(int aa, int bb, int cc)

{

super(aa, bb);

c=cc;

}

}

class SubSubClass extends SubClass

{ int a;

SubSubClass(int aa, int bb, int cc)

{ super(aa, bb, cc);

A = aa+bb+cc;

}

void show()

{

System.out.println("a="+a+"\nb="+b+"\nc="+c);

}

}

运行结果是什么呀?

第1个回答  2023-12-31
在给定的代码中,存在一些编译错误,因此无法运行并得到结果:
1. 缺少对变量 `a` 和 `b` 的声明和初始化。在 `main` 方法中尝试打印 `a` 和 `b` 的值,但是这两个变量在类 `abc` 或其任何父类中并没有声明。必须先声明并赋值后才能打印它们的值。
2. 类 `SuperClass` 没有在代码中定义。`SubClass` 继承自 `SuperClass`,但是没有提供 `SuperClass` 的定义。你需要定义 `SuperClass` 并且提供一个接受两个参数的构造函数,因为在 `SubClass` 的构造函数中使用了 `super(aa, bb);` 来调用父类的构造函数。
3. 在 `SubSubClass` 中,变量 `A` 应该是 `a`,Java是大小写敏感的。
4. 没有在 `main` 方法中创建 `SubSubClass` 或者其它类的实例,并调用 `show()` 方法来打印 `a`、`b` 和 `c` 的值。
让我们解决上述问题,提供一个可能的 `SuperClass`,并在 `main` 方法中创建 `SubSubClass` 的实例并调用 `show()` 方法:
```java
import java.io.*;
public class abc {
public static void main(String args[]) {
SubSubClass subSubClass = new SubSubClass(1, 2, 3);
subSubClass.show();
}
}
class SuperClass {
int a, b;
SuperClass(int aa, int bb) {
a = aa;
b = bb;
}
}
class SubClass extends SuperClass {
int c;
SubClass(int aa, int bb, int cc) {
super(aa, bb);
c = cc;
}
}
class SubSubClass extends SubClass {
int a;
SubSubClass(int aa, int bb, int cc) {
super(aa, bb, cc);
this.a = aa + bb + cc;
}
void show() {
System.out.println("a=" + a + "\nb=" + super.a + "\nc=" + c);
}
}
```
现在,当你运行程序时,结果将是:
```
a=6
b=1
c=3
```
解释:
- `SubSubClass` 的构造函数接收三个参数 `aa`、`bb` 和 `cc`,并通过 `super(aa, bb, cc)` 调用 `SubClass` 的构造函数。
- 在 `SubClass` 的构造函数中,通过 `super(aa, bb)` 又调用了 `SuperClass` 的构造函数,将字段 `a` 和 `b` 分别初始化为 `1` 和 `2`。
- `SubSubClass` 的构造函数然后将自己的字段 `a` 初始化为 `aa + bb + cc`,即 `1 + 2 + 3`,结果为 `6`。
- 字段 `c` 在 `SubClass` 的构造函数中被初始化为 `3`。
- `show()` 方法打印 `SubSubClass` 的局部变量 `a`(值为6),`SuperClass` 的变量 `a`(值为1,使用 `super.a` 访问),和 `c`(值为3)。
相似回答