如下代码的运行结果是什么?为什么? interface A{ int x = 0; } class B{ int x =1; } class C extends B implements A { public void pX(){ System.out.println(x); //super.x A.x } public static void main(String[] args) { new C().pX(); } }
时间: 2023-11-22 22:52:30 浏览: 65
代码的运行结果是 1,因为类 C 继承了类 B,并且实现了接口 A。由于类 B 中定义了一个实例变量 x,因此类 C 也具有这个实例变量。在类 C 中调用 pX() 方法时,会输出类 B 中的实例变量 x 的值,即 1。在类 C 中也可以用 super.x 来引用类 B 中的实例变量 x,而接口 A 中的变量 x 在这里不会被访问到。因为接口中定义的变量都是 public static final 的,它们会被类和接口的实现共享,并且不能被子类或实现类覆盖。
相关问题
public interface MyInterface{ int x = 20; } public class Test implements MyInterface{ private static int x; public static void main(String[] args){ System.out.println(++x); } } 的运行结果为什么是1?
这是因为在Test类中定义了一个名为x的静态变量,它会隐藏MyInterface接口中的x变量。在main方法中,++x操作的是Test类中的静态变量x,它的初始值为0,因此执行++x后,x的值变为1,所以最终输出的结果为1。如果要输出MyInterface接口中的x变量,可以使用MyInterface.x来引用。
阅读以下程序段,找出错误并改正 public interface Com{ abstract void cry(); pubic int x=0; static int y=0; } abstract class Cat implement Com{ abstract void cry(); }
以下是改正后的程序段:
```
public interface Com {
abstract void cry();
int x = 0;
static int y = 0;
}
abstract class Cat implements Com {
abstract void cry();
}
```
错误:
- `pubic` 应该为 `public`。
- `Com` 接口中的 `x` 声明应该去掉 `public`。
- `Cat` 类实现 `Com` 接口时,`cry` 方法的访问级别不应该为 `abstract`。
修改:
- 将 `pubic` 改为 `public`。
- 将 `public int x=0;` 改为 `int x = 0;`。
- 将 `abstract void cry();` 改为 `public void cry() {}`。