繁体   English   中英

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

[英]import and package statements apply to all classes within a source code file

我正在阅读一本Java书籍,并附有以下段落:

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

我在理解此段时遇到困难,可以请人向我解释其背后的想法吗?

您可以在一个文件中声明多个类,例如,以下将定义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 (或文件中声明的类的任何子集)可用

您可能想知道BarFoo类中声明了什么? 这是一个内部类-有关内部类的(有点稀疏)oracle教程在这里

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

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 {}
    }
}

它们实际上也位于同一个包中,尽管它们也包含在封闭类中,而不仅仅是包级类。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM