import和package语句适用于源代码文件中的所有类

时间:2015-08-04 19:33:35

标签: java

我正在阅读一本java书,并出现在以下段落中:

  

import和package语句适用于源中的所有类   代码文件。换句话说,没有办法声明多个类   在一个文件中,让它们在不同的包中或使用不同的   进口。

我在理解这一段时遇到困难,可以请别人解释一下它背后的想法吗?

2 个答案:

答案 0 :(得分:3)

您可以在单个文件中声明多个类,例如,以下内容将定义类FooBarBaz

package com.example;

import java.util.List;
import java.util.ArrayList;

public class Foo {

    public class Bar {}

}

class Baz {}

每个文件只能有一个顶级公共类,在本例中为Foo

注意包声明;这适用于文件中的所有类;所有课程都在' com.example'命名空间 - 您不能在Foo' com.example'以及Bar' com.example.something'

导入适用于此文件中的所有类;您不仅可以将导入提供给Baz(或文件中声明的类的任何子集)

您可能想知道在Bar类中声明的Foo正在做什么;这是一个内部类 - 关于内部类的(有点稀疏)oracle教程是here

答案 1 :(得分:3)

通常,单个源代码文件包含单个公共类定义:

package com.example;
public class FirstClass {
}

可以在文件中将多个类定义为顶级,但只有一个可以是公共的:

package com.example;
public class FirstClass {
}
class SecondClass {
}

这是你的段落引用的情况:文件中声明的所有顶级类都在同一个包中:在这种情况下为com.example

类也可以在各种内部范围中定义,例如在类中作为静态或非静态,或在方法中

package com.example;
public class Outer {
    static class StaticInner { }
    class Inner {}
    void method(){
        class MethodInner {}
    }
}

这些也有效地存在于同一个包中,尽管它们的范围也包含在封闭类中,而不仅仅是包级别的类。

有关如何构造和访问内部类以及它们如何命名的各种定义,但这似乎超出了您最初的问题的范围。