0

通过创建该类的对象,可以通过静态 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);
    }

}

谢谢 :)

4

0 回答 0