限定名称和字段访问表达式之间有什么区别?

Gee*_*eek 6 java jls

受保护访问JLS详细信息:

设C是声明受保护成员的类.仅允许在C的子类S的主体内访问.

此外,如果Id表示实例字段或实例方法,则:

如果访问是通过限定名称Q.Id,其中Q是ExpressionName,则当且仅当表达式Q的类型是S或S的子类时才允许访问.

如果访问是通过字段访问表达式E.Id,其中E是主表达式,或通过方法调用表达式E.Id(...),其中E是主表达式,则允许访问当且仅当如果E的类型是S或S的子类.

限定名称字段访问表达式之间什么区别?

cod*_*Man 0

qualified name就类名而言有意义(从静态的角度思考它)。其中 as 字段访问表达式类似于Fully Qualified Name为类的特定对象(包括方法名称)指定引用。

例子 :

public class A
{
    public static void method1()
    {//does something
    }
}

public class B 
{
     public int dummy;
     public void hello()
     {
          System.out.println("Hello!");
     }
}

public class Main 
{
     public static void main(String[] args) 
     {
          B b = new B();
          b.dummy=1;
          b.hello();
     }
}
Run Code Online (Sandbox Code Playgroud)

在上面的课程中如果我们说

A.method1() 
Run Code Online (Sandbox Code Playgroud)

它更像是一个合格的名称,其中

b.hello(); 
b.dummy
Run Code Online (Sandbox Code Playgroud)

更多的是一个字段访问表达式。