通过创建该类的对象,可以通过静态 main 方法访问非静态变量。这怎么可能?
面向对象的规则是非静态变量不能被静态方法访问,因为当我们运行一个类时,首先会发生静态块/静态变量初始化。将类加载到 JVM 时执行静态块。所以我们不能在执行的静态方法中访问非静态变量。但是为什么只有这个场景没有编译错误呢?请给我一个解释
这是允许的
public class Thread1 extends Thread{
int s ;
}
public class MainThread {
int y =89;
public static void main(String[] args) {
Thread1 j = new Thread1();
System.out.println(j.s=43);
}
}
这是不允许的,为什么???
public class MainThread {
int y =89;
public static void main(String[] args) {
Thread1 j = new Thread1();
System.out.println(y);
}
}
谢谢 :)