class StaticDemo { static int x; int y; public static int getX() { return x; } public static void setX(int newX) { x = newX; } public int getY() { return y; } public void setY(int newY) { y = newY; } } public class KY4_1 { public static void main(String[] args) { System.out.println("类变量x="+StaticDemo.getX()); System.out.println("对象变量y="+StaticDemo.getY()); StaticDemo a= new StaticDemo(); StaticDemo b= new StaticDemo(); a.setX(1); a.setY(2); b.setX(3); b.setY(4); System.out.println("类变量a.x="+a.getX()); System.out.println("对象变量a.y="+a.getY()); System.out.println("类变量b.x="+b.getX()); System.out.println("对象变量b.y="+b.getY()); } } 指出出错的地方,出错的原因
时间: 2024-01-29 15:03:22 浏览: 91
代码中存在两个错误:
1. 在 KY4_1 类中,尝试使用 StaticDemo 类的非静态成员变量 y,这是不合法的,因为 y 是一个对象级别的变量,必须通过对象来访问。
2. 在 KY4_1 类中,尝试使用 StaticDemo 类的静态方法 getX() 访问 y 变量,这也是不合法的,因为静态方法只能访问静态成员变量,而 y 是一个对象级别的变量,不是静态的。
需要将代码修改为:
```
class StaticDemo {
static int x;
int y;
public static int getX() {
return x;
}
public static void setX(int newX) {
x = newX;
}
public int getY() {
return y;
}
public void setY(int newY) {
y = newY;
}
}
public class KY4_1 {
public static void main(String[] args) {
System.out.println("类变量x=" + StaticDemo.getX());
StaticDemo.setX(1);
StaticDemo a = new StaticDemo();
a.setY(2);
System.out.println("类变量a.x=" + a.getX());
System.out.println("对象变量a.y=" + a.getY());
StaticDemo b = new StaticDemo();
b.setY(4);
System.out.println("类变量b.x=" + b.getX());
System.out.println("对象变量b.y=" + b.getY());
}
}
```
这样就可以正确地访问静态和非静态成员变量了。
阅读全文