在java main方法中访问公共变量时发生编译时错误

在java main方法中访问公共变量时发生编译时错误,java,Java,有人能帮上忙吗?我有一个用java创建的父类和子类。我在子类静态main方法中创建了一个父类实例。可以访问public方法,但不能访问public变量。起初我认为这与静态范围有关。但这似乎不是问题所在。因为我在子类的主方法中显式地创建父类的实例。所以理想情况下,当我在静态上下文中显式创建父类的实例时,变量和方法都应该是可访问的。奇怪的是,方法是可以访问的,没有错误,但变量不是。为什么编译器可以使用方法,但不能使用变量?理想情况下,错误应该同时显示,或者根本不显示。 两个类都在不同的包中。但我希望

有人能帮上忙吗?我有一个用java创建的父类和子类。我在子类静态main方法中创建了一个父类实例。可以访问public方法,但不能访问public变量。起初我认为这与静态范围有关。但这似乎不是问题所在。因为我在子类的主方法中显式地创建父类的实例。所以理想情况下,当我在静态上下文中显式创建父类的实例时,变量和方法都应该是可访问的。奇怪的是,方法是可以访问的,没有错误,但变量不是。为什么编译器可以使用方法,但不能使用变量?理想情况下,错误应该同时显示,或者根本不显示。 两个类都在不同的包中。但我希望,即使这些类位于不同的包中,公共范围也不会成为问题。请查找以下两个类

package com.learning.scjp.examples;

public class ParentClass {

    public String parentClassPublicVariable = "parentClassPublicVariable";

    public  void parentClassPublicScopeMethod(){
        System.out.println("parentClassPublicScopeMethod");
    }
} 
=================================================================
package learning.access.classes;

import com.learning.scjp.examples.ParentClass;

public class ChildClass extends ParentClass {
    public static void main(String[] args) {
        ParentClass parentClass = new ParentClass();
        parentClass.parentClassPublicVariable;//This statement shows compile time error "not a statement"
        parentClass.parentClassPublicScopeMethod();
    }
}

一般来说,java中的语句包含足够的信息来编译,从而将代码转换为有意义的操作,JVM可以执行这些操作

通常可以是:

  • 声明语句(示例:
    inti=0;
  • 表达式语句(示例:
    i++
  • 控制流语句(例如:
    for(inti=0;i<10;i++)
该行:
parentClass.parentClassPublicVariable

基本上是没有意义的,它没有动作,因此编译器不理解应该做什么,从编译器的角度来看,这是一个错误。因此,存在“非语句”编译错误。
您可以阅读有关这些语句的信息

您可以通过以下方式访问这些语句:-

class ParentClass {

    public String parentClassPublicVariable = "parentClassPublicVariable";

    public  void parentClassPublicScopeMethod(){
        System.out.println("parentClassPublicScopeMethod");
    }
} 

public class Try extends ParentClass {
    public static void main(String[] args) {
        ParentClass parentClass = new ParentClass();
        System.out.println(parentClass.parentClassPublicVariable); // You can print it.
        parentClass.parentClassPublicVariable = "StackOverflow"; // You can even reassign variable.
        System.out.println(parentClass.parentClassPublicVariable);
        parentClass.parentClassPublicScopeMethod();
    }
}

基本上是parentClass.parentClassPublicVariable行;它本身是无用的,编译器无法理解它,因此错误与您假设的访问修饰符或继承无关。

您期望什么
parentClass.parentClassPublicVariable要做什么?您没有将数据设置为任何变量。它应该类似于
String variable=parentClass.parentClassPublicVariable你不能像以前那样写。你必须用它,非常感谢。访问变量后,我没有执行任何操作。非常感谢。我现在明白了。