我对Java很新,每当我们在学校编写程序时,我们将每个类放在一个单独的java文件中,但我不记得为什么会这样(如果有原因的话)。现在我回到我的笔记上,并试图理解"这一切是如何运作的。
这是必要的,为什么?此外,是否应该存储文件的位置 - 例如。在同一个目录?
E.g。如果我们有一个班级'车辆'和一个班级的汽车'延伸'车辆',我们是否需要保存'车辆'和' Car'在java文件' Vehicle.java'和' Car.java'或者可以将这两个类保存在(例如)' Test.java'中
复制免责声明:我的问题与this one不同,因为我的问题是否可以将多个类放在一个.java文件中;我特别感兴趣的解释,即为什么它是不可能的。我对调用该方法不感兴趣(链接的问题只是说' ) 的
答案 0 :(得分:5)
可以在一个.java文件中放置多个类。但是,这是一个坏主意。这就是原因:
package foo.bar;
public class Foo { }
public class Bar { }
包含上述代码的源文件不会被编译,因为每个.java文件只能包含一个公共class
/ interface
/ enum
(顺便说一句) ,这些被称为"类型" s)。因此,您必须将它们保存在同一个文件中:
package foo.bar;
public class Foo { }
class Bar { } // Not public
或者这个:
package foo.bar;
class Foo { } // Not public
public class Bar { }
现在出现了一个缺点:如果非公共类型包含对所有内容有用的内容(例如在正态分布上生成随机数的方法),则无法访问包含在foo.bar
内的任何内容!
此外,管理小型源文件也更容易。
此外,是否应该存储文件的位置 - 例如。在同一目录
是 - 这取决于包名称。例如,包foo.bar
,foo.baz
,foo.qux
,bar.foo
,bar.baz
和bar.qux
看起来像公共源文件夹的这些子文件夹(让我们称之为src
):
./src/
L___ ./src/foo/
| L__ ./src/foo/bar/
| L__ ./src/foo/baz/
| L__ ./src/foo/qux/
L___ ./src/bar/
| L__ ./src/bar/foo/
| L__ ./src/bar/baz/
| L__ ./src/bar/qux/
当您将此逻辑应用于java.lang.Object
时(假设源文件夹仍被称为src
),您将获得此信息:
./src/
L___ ./src/java/
| L___ ./src/java/lang/
| | L___ ./src/java/lang/Object.java