java中的类定义



我是Java新手,我想要一个改进:首先,我不确定是否可以在同一个文件中有两个类。我的问题是,当你看到以下代码序列时,每个类是什么:

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
}

Something Else类的作用是什么?为什么里面没有代码?我知道这是一个非常愚蠢的问题,但有些细节我真的不知道,我需要一些帮助。。。

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

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

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

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

  • 查找SomethingElse类,该类必须位于SomethingAlse.class文件中
  • 调用main方法,匹配我上面粘贴在这个类上的签名(并将任何给定的参数放入args数组中)

不能调用java Something,因为该类不是公共的,也没有主方法。但是程序中的其他类(特别是SomethingElse,可以使用Something类)。

每个文件只能有一个公共类,并且该文件必须具有与该类相同的名称。但是,您可以有其他私有类,只有文件类才能看到。例如:

文件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
}

您可以在同一个文件中定义多个类。但是,应该只有一个类被定义为public,并且文件名将是该public类名。

No code here!!!中,可以定义类变量和方法。您的main()就是这样一个例子。

在上面的文件中,有两个类SomethingElse(public)和Something。现在,这通常是在公共类内部调用非公共类时完成的。此外,在上面的代码片段中,SomethingElse似乎是一个"驱动程序"类。换句话说,它没有自己的任何功能/数据,但用于执行(驱动)其他类(在这种情况下可能是Something)

可以有嵌套类,但不允许有两个独立的公共类。每个公共类都应该在其自己的文件中,其名称与该类相同。

虽然在同一个文件中可能有两个类,但这被认为是一种糟糕的做法。除了可读性下降之外,最终很难找到类声明的实际位置。此外,如果您声明了一个与类相关的变量,而不是与共享.java名称的类相关,那么javac很可能会在编译时出现问题。

如果必须这样做,请确保您使用第二个类的唯一位置是在共享.java名称的类中。(例如,仅在SomethingElse类中使用Something对象)。否则,将所有类分离到单独的.java文件中。

是的,在一个Java文件中可以有两个或多个类。唯一的条件是只有一个类将包含带有签名的主方法(public static void main(String[] args))。只有一个公开课会在那里。使用该公共类名可以保存文件——文件名必须与公共类名匹配。

相关内容

  • 没有找到相关文章