java中的类定义

时间:2012-03-08 17:44:49

标签: java class main public

我是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
}

这个类的作用是什么以及为什么里面没有代码?我知道这是一个非常愚蠢的问题,但有些细节我真的没有得到,我想要一些帮助......

7 个答案:

答案 0 :(得分:4)

每个文件可以有多个类,但只有一个类可以是public,其名称必须与文件名相匹配(例如MyClass.java中的public MyClass)。

外部世界可以看到文件的公共类,特别是如果该类具有public static main(String[] args)方法,则可以使用它来启动应用程序。

例如,在您的情况下,使用javac编译文件后,您将获得文件Something.classSomethingElse.class

使用命令java SomethingElse将告诉Java虚拟机执行以下操作:

  • 找到SomethingElse类,它必须位于SomethingElse.class文件中
  • 调用main方法,匹配我在上面粘贴的签名(并将任何给定的参数放在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))。 只有一个公共课程。使用该公共类名称,您可以保存文件 - 文件名必须与公共类的名称相匹配。