Java包 - 引用来自不同包的类

Sam*_*Sam 5 java package

在(默认包)中,我有一个名为"Bird"的类,它有一个名为"dialog"的方法.

我可以在同一个包中创建一个名为Class1的类,如下所示:

public class Class1
{
    public static void main(String[] args) 
    {
        Bird b = new Bird("Alexander",true,5);
        b.dialog("tweet!");
    }
}
Run Code Online (Sandbox Code Playgroud)

这实际上有效,我实际上可以tweet!在控制台中看到.

我的问题是:如果代码Class1位于包中,我需要在代码中添加什么Fundamental (而类Bird位于"默认包"中)?我收到一个错误:在这种情况下"鸟类型未被识别".我应该以某种方式表明包裹.

附带问题:1.什么是类路径?如何更改?我已经看到这个术语在几个与包相关的讨论的背景下被模糊地使用,但没有一个像我刚才给出的明确的例子.2.我见过多次名为xxx.bla.zzz的软件包 - 这是标准吗?我通常只使用一个通用名称(不是三个分隔的.)我理解一个包是Java替代其他语言的命名空间.如果有几个解决方案值得一提,我会很感激.谢谢!

fms*_*msf 11

您永远不应该使用默认包,这不是一个好习惯,您不能从默认包中导入类.始终声明您的包结构.

Bird第一行的类中添加:

package animals;
Run Code Online (Sandbox Code Playgroud)

在Class1.java的第一行中写下您的包名

package foo;

import animals.Bird;
Run Code Online (Sandbox Code Playgroud)

注意,为了使这个工作,类Bird和类Class1应分别在文件夹"animals"和文件夹"foo"中

  • +1您无法从默认包中导入类. (3认同)