我是Java的新手,我想要一个改进: 首先,我不确定我是否可以在同一个文件中有2个类。 我的问题是当你看到这段代码时每个类是什么:
class Something {
//code here
} //end of class Something
public class SomethingElse {
//NO code here!!!
public static void main(String[] args) {
//code of main here
}//end of main
}
这个类的作用是什么以及为什么里面没有代码?我知道这是一个非常愚蠢的问题,但有些细节我真的没有得到,我想要一些帮助......
答案 0 :(得分:4)
每个文件可以有多个类,但只有一个类可以是public
,其名称必须与文件名相匹配(例如MyClass.java中的public MyClass
)。
外部世界可以看到文件的公共类,特别是如果该类具有public static main(String[] args)
方法,则可以使用它来启动应用程序。
例如,在您的情况下,使用javac编译文件后,您将获得文件Something.class
和SomethingElse.class
。
使用命令java SomethingElse
将告诉Java虚拟机执行以下操作:
args
数组中)。您无法拨打java Something
,因为该课程不公开且没有主要方法。但是你的程序中的其他类(特别是SomethingElse,可以使用你的Something类)。
答案 1 :(得分:0)
每个文件只能有一个公共类,并且该文件必须具有相同的类名。但是你可以拥有其他只有文件类才能看到的私有类。例如:
档案Something.java
public class Something {
//Something can access SomethingElse's doSomething method.
private class SomethingElse {
public void doSomething() {
}
}
}
class SomethingToo {
}
档案OtherSomething.java
public class OtherSomething {
//OtherSomething cannot access SomethingElse's doSomething method.
//But can access SomethingToo, if they are in the same package
}
答案 2 :(得分:0)
您可以在同一个文件中定义多个类。但是,应该只有一个类定义为public,文件名将是该公共类名。
在No code here!!!
中,您可以定义类变量和方法。你的main()就是这样一个例子。
答案 3 :(得分:0)
在上面的文件中,有两个类SomethingElse(public)和Something。现在,这通常在公共类在内部调用非公共类时完成。此外,在上面的代码片段中,SomethingElse似乎是一个“驱动程序”类。换句话说,它没有自己的任何功能/数据,但用于执行(驱动)其他类(在这种情况下可能是Something)
答案 4 :(得分:0)
您可以拥有嵌套类,但不允许使用两个单独的公共类。每个公共类都应该在它自己的文件中,名称与类相同。
答案 5 :(得分:0)
虽然在同一个文件中可能有2个类,但它被认为是不好的做法。除了可读性降低之外,最终很难找到实际发生的类声明的位置。另外,如果您声明一个与该类相关的变量,而不是与该共享.java名称的类,则javac很可能会出现编译问题。
如果必须这样做,请确保您使用第二个类的唯一位置是在共享.java名称的类中。 (例如,只在Something
类中使用SomethingElse
个对象。否则,将所有类分成单独的.java文件。
答案 6 :(得分:-1)
是的,您可以在单个Java文件中拥有2个或更多类。
唯一的条件是只有一个类包含带签名的主方法(public static void main(String[] args)
)。
只有一个公共课程。使用该公共类名称,您可以保存文件 - 文件名必须与公共类的名称相匹配。