现在,我正在为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上阅读此教程。

10-08 04:14