在java main方法中访问公共变量时发生编译时错误
有人能帮上忙吗?我有一个用java创建的父类和子类。我在子类静态main方法中创建了一个父类实例。可以访问public方法,但不能访问public变量。起初我认为这与静态范围有关。但这似乎不是问题所在。因为我在子类的主方法中显式地创建父类的实例。所以理想情况下,当我在静态上下文中显式创建父类的实例时,变量和方法都应该是可访问的。奇怪的是,方法是可以访问的,没有错误,但变量不是。为什么编译器可以使用方法,但不能使用变量?理想情况下,错误应该同时显示,或者根本不显示。 两个类都在不同的包中。但我希望,即使这些类位于不同的包中,公共范围也不会成为问题。请查找以下两个类在java main方法中访问公共变量时发生编译时错误,java,Java,有人能帮上忙吗?我有一个用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代码>你不能像以前那样写。你必须用它,非常感谢。访问变量后,我没有执行任何操作。非常感谢。我现在明白了。