Java为什么不能访问此类?

时间:2019-07-27 12:17:17

标签: java

我在名为Fruit的程序包中有一个名为food的超类。我在默认包中有一个名为Apple的子类。 Apple扩展了Fruit

Project Structure :

default package
   -Apple.java
food package
   -Fruit.java

出于好奇,我从Fruit类中删除了package语句,只编译了Apple类,但编译失败。

自从我的Apple类提到import food.Fruit;以来,Java是否不应该在名为Fruit的目录内找到food类并编译Apple类?

Fruit类:

//package food;

public class Fruit
{
    private int size=10;

    public int getSize()
    {
        return size;
    }
}

Apple类:

import food.Fruit;

class Apple extends Fruit
{

    public static void main(String[] args)
    {
        Apple a= new Apple();
        System.out.println(a.getSize());
    }
}

我收到的错误消息是:

Apple.java:1: error: cannot access Fruit
import food.Fruit;
           ^
  bad source file: .\food\Fruit.java
    file does not contain class food.Fruit
    Please remove or make sure it appears in the correct subdirectory of the sourcepath.

1 个答案:

答案 0 :(得分:0)

  

package语句标识Java程序所使用的软件包   属于。如果您的程序不包含package语句,则   程序属于默认软件包,它只是一个   没有名字。

要解决此问题,您应该从两个类中删除package语句,然后将这两个类都视为默认包。

否则,您应该在该软件包的所有类中使用package语句。

for more details