现在我正在为 OCJP/SCJP 考试做准备。我正在通过
完成我的所有程序命令行。我刚发现一个问题。
我有两个类(class) Class1 和 Class2。两者都在 pack1 中。
package pack1;
public class Class1
{
int var1 = 1;
private int var2 = 2;
public int var3 = 3;
protected int var4 = 4;
}
我可以从 pack1 目录编译这个类。
二等
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 上阅读这个很好的教程
关于java - 在同一个包中编译两个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17990810/