Java 是否可以通过类方法访问实例方法和变量

Java 是否可以通过类方法访问实例方法和变量,java,class,methods,Java,Class,Methods,直到我在Oracle文档上读到这篇文章(类方法不能直接访问实例变量或实例方法,它们必须使用对象引用)我唯一知道的是,关于实例方法和变量,类(静态)方法不能直接访问 当它说…他们必须使用对象引用时意味着什么?这是否意味着我们可以使用类方法间接访问实例变量和方法 先谢谢你 这意味着这是允许的: public class Test { public int instanceVariable = 42; public void instanceMethod() {System.out.p

直到我在Oracle文档上读到这篇文章(类方法不能直接访问实例变量或实例方法,它们必须使用对象引用)我唯一知道的是,关于实例方法和变量,类(静态)方法不能直接访问

当它说…他们必须使用对象引用时意味着什么?这是否意味着我们可以使用类方法间接访问实例变量和方法


先谢谢你

这意味着这是允许的:

public class Test {
    public int instanceVariable = 42;
    public void instanceMethod() {System.out.println("Hello!");}

    public static void staticMethod() {
        Test test = new Test();

        System.out.println(test.instanceVariable); // prints 42
        test.instanceMethod(); // prints Hello!
    }
}
这不是:

public class Test {
    public int instanceVariable = 42;
    public void instanceMethod() {System.out.println("Hello!");}

    public static void staticMethod() {
        System.out.println(instanceVariable); // compilation error
        instanceMethod(); // compilation error
    }
}

顾名思义,实例变量绑定到类的实例。因此,直接从类方法访问它(它不绑定到任何特定实例)是没有意义的。因此,要访问实例变量,必须具有从中访问实例变量的类的实例

然而,情况并非如此——类变量处于“顶层”,因此实例方法和变量可以访问

class MyClass;
{  
 public int x = 2;
 public static int y = 2;

 private int z = y - 1; //This will compile.

 public static void main(String args[])
 {
    System.out.println("Hello, World!");
 }

 public static void show()
 {
    System.out.println(x + y); // x is for an instance, y is not! This will not compile.

    MyClass m = new MyClass();
    System.out.println(m.x + y); // x is for the instance m, so this will compile.
 }

 public void show2()
 {
  System.out.println(x + y); // x is per instance, y is for the class but accessible to every instance, so this will compile.
 }
}

是否有该文档的在线链接?这是链接