现在,我正在为OCJP / SCJP考试做准备。我正在通过我的所有程序
命令行。我只是发现一个问题。
我有两个类Class1和Class2。两者都在pack1中。
package pack1;
public class Class1
{
int var1 = 1;
private int var2 = 2;
public int var3 = 3;
protected int var4 = 4;
}
我可以从pack1 direcory编译此类。
二等
package pack1;
public class Class2 extends Class1
{
public void accessVars()
{
System.out.println(var1);
System.out.println(var2);
System.out.println(var3);
System.out.println(var4);
}
public static void main(String args[])
{
Class2 c = new Class2();
c.accessVars();
}
}
我无法从pack1目录编译此类。我收到“找不到Class1的符号错误”,但是我可以通过导入pack1.Class1从外部进行编译;
我知道为什么会这样,但是我检查了NetBeans,他们可以编译类而无需导入。怎么样 ?我应该怎么做才能从pack1目录编译它。
谢谢,
希季吉
最佳答案
您不能在类外部访问private
变量。如果希望它们在Class2
中可访问,请将其更改为公共或受保护的
做如下
javac pack1/Class1.java
javac pack1/Class2.java
简而言之,
如果要编译打包的Java文件,请从开始打包结构的目录中进行编译。例如在您的情况下
javac pack1.Class1.java
尝试启动这些名称时,请使用完全限定的类名,例如
java pack1.Class2
您可以在how to compile and launch java programs in package structure上阅读此教程。