class A { static int m; static void f0) f m = 20 ; //A ] class B extends A void f() f m = 222 ; } / /B 1/C class E f public static void main (String args[]) A. f();
时间: 2024-01-30 10:04:18 浏览: 38
这段代码有一些语法错误,我来帮你分析一下:
1. 在 class A 中,static int m; 后面的 f0) 应该是一个方法名,但是缺少了参数列表,应该改成 f0()。
2. 在 A 类的方法 f0() 中,应该是 f(m) = 20; 而不是 f m = 20;,因为 f 是一个方法名,需要用小括号包裹参数。
3. 在 B 类中,应该是 void f() 而不是 void f;
4. 在 B 类的方法 f() 中,应该是 A.f(m) = 222; 而不是 f m = 222;,因为 A.f(m) 才是调用 A 类的方法 f。
5. 在 class E 中,main 方法的命名应该是小写的 main,而不是大写的 MAIN。
6. 在 main 方法中,应该改为 A.f0(); 而不是 A.f();,因为 A 类中的方法名是 f0,而不是 f。
所以,修正后的代码应该是这样的:
```
class A {
static int m;
static void f0() {
f(m) = 20;
}
}
class B extends A {
void f() {
A.f(m) = 222;
}
}
class E {
public static void main(String[] args) {
A.f0();
}
}
```
相关问题
class A { static int m; static void f() { m = 20; }}class B extends A { void f() { m= 222; }}class E { public static void main(String[] args) { A.f(); }}有错误吗?
这段代码没有语法错误,但是类 B 中的方法 f() 覆盖了类 A 中的方法 f(),所以在类 B 的对象调用 f() 方法时,实际上会调用类 B 中的方法 f(),而不是类 A 中的方法 f()。因此,如果我们在类 E 的 main 方法中创建一个类 B 的对象并调用其 f() 方法,那么 m 的值会被设置为 222,而不是 20,即类 B 的方法 f() 覆盖了类 A 的方法 f()。示例如下:
```
class A {
static int m;
static void f() {
m = 20;
}
}
class B extends A {
void f() {
m = 222;
}
}
class E {
public static void main(String[] args) {
A.f();
B b = new B();
b.f();
System.out.println(A.m); // 输出 222
}
}
```
final class Father{ //A int a=100; } class Child extends Father{ //B int b=200; } public class B{ //C public static void main(String[] args) { Child child=new Child(); //D } }
这段代码中,类Father被声明为final,意味着它不能被继承。而类Child继承了Father类,并且添加了自己的成员变量b。在main方法中,我们创建了Child类的一个对象child。由于Father类的构造函数是默认的,所以在创建Child对象时,首先会调用Father类的构造函数来初始化Father类的成员变量a。然后再调用Child类的构造函数来初始化Child类的成员变量b。这段代码中,我们无法在Child类中访问Father类的私有成员变量a,但是可以通过集成来继承它的公共成员变量和方法。