从另一个类访问一个类,两个类都在同一个包中

时间:2016-11-15 11:43:39

标签: java

我是Java的新手,所以如果代码看起来过于愚蠢,请耐心等待。 : - )

我想要实现的很简单:定义两个类ClassAClassB,它们都是同一个包find_class的一部分(这也是目录的名称)课程在哪里。

所以我的文件如下。

ClassA.java

package find_class;

public class ClassA {
    public void func() {

    }
}

ClassB.java

package find_class;

import find_class.ClassA;

public class ClassB {
    public static void main(String[] args) {
        ClassA a = new ClassA();
    }
}

当我编译ClassB时,我遇到了许多错误:

find_class$ javac ClassB.java 
ClassB.java:3: error: cannot find symbol
import find_class.ClassA;
                 ^
  symbol:   class ClassA
  location: package find_class
ClassB.java:7: error: cannot find symbol
        ClassA a = new ClassA();
        ^
  symbol:   class ClassA
  location: class ClassB
ClassB.java:7: error: cannot find symbol
        ClassA a = new ClassA();
                       ^
  symbol:   class ClassA
  location: class ClassB
3 errors

我没有使用任何IDE,目录结构如下:

find_class
  - ClassA.java
  - ClassB.java

我做错了什么?

3 个答案:

答案 0 :(得分:3)

包名称和类路径应该同步。换句话说,包名称是类路径的延续。

例如,如果文件夹结构是x / y / z,类路径是x / y,包名是z,那么你就不应该导入y.z

对您的案例应用相同的逻辑,您的类路径已设置为" find_class"。所以,你不需要import语句。

答案 1 :(得分:0)

你的类说它在Package“find_class”中,该类知道其包中的所有其他类,因此你不需要导入ClassA,因为它可以看到它。

删除行

import find_class.ClassA;

答案 2 :(得分:0)

您不需要导入其他类。例如,如果您想使用其他类中的方法,您应该使用像您一样的对象。

ClassA a = new ClassA();

顺便说一句,如果有相同的包,你就无法导入类。