通过两个类StaticDemo、Main 说明静态变量/方法与实例变量/方法的区别。 以下程序编译的时候会报错,请修改程序,使得程序能够正确运行并输出和样例一样的结果。
时间: 2024-03-17 12:40:18 浏览: 34
静态变量/方法属于类,不依赖于类的实例化对象,可以通过类名直接访问;实例变量/方法属于对象,需要实例化对象后才能访问。以下是示例代码:
```java
public class StaticDemo {
static int staticVar = 0; // 静态变量
int instanceVar = 0; // 实例变量
static void staticMethod() { // 静态方法
System.out.println("This is a static method.");
}
void instanceMethod() { // 实例方法
System.out.println("This is an instance method.");
}
}
public class Main {
public static void main(String[] args) {
StaticDemo.staticVar = 1; // 直接通过类名访问静态变量
StaticDemo.staticMethod(); // 直接通过类名调用静态方法
StaticDemo obj1 = new StaticDemo();
StaticDemo obj2 = new StaticDemo();
obj1.instanceVar = 2; // 访问实例变量需要通过对象
obj2.instanceVar = 3;
obj1.instanceMethod(); // 调用实例方法需要通过对象
obj2.instanceMethod();
System.out.println("staticVar=" + StaticDemo.staticVar); // 静态变量可以通过类名或对象访问
System.out.println("obj1.instanceVar=" + obj1.instanceVar);
System.out.println("obj2.instanceVar=" + obj2.instanceVar);
}
}
```
修改后的程序如下:
```java
public class StaticDemo {
static int staticVar = 0; // 静态变量
int instanceVar = 0; // 实例变量
static void staticMethod() { // 静态方法
System.out.println("This is a static method.");
}
void instanceMethod() { // 实例方法
System.out.println("This is an instance method.");
}
}
public class Main {
public static void main(String[] args) {
StaticDemo.staticVar = 1; // 直接通过类名访问静态变量
StaticDemo.staticMethod(); // 直接通过类名调用静态方法
StaticDemo obj1 = new StaticDemo();
StaticDemo obj2 = new StaticDemo();
obj1.instanceVar = 2; // 访问实例变量需要通过对象
obj2.instanceVar = 3;
obj1.instanceMethod(); // 调用实例方法需要通过对象
obj2.instanceMethod();
System.out.println("staticVar=" + StaticDemo.staticVar); // 静态变量可以通过类名或对象访问
System.out.println("obj1.instanceVar=" + obj1.instanceVar);
System.out.println("obj2.instanceVar=" + obj2.instanceVar);
}
}
```
运行结果:
```
This is a static method.
This is an instance method.
This is an instance method.
staticVar=1
obj1.instanceVar=2
obj2.instanceVar=3
```