一个.java源文件中可以有多个类吗?(内部类除外)有什么条件?

一个.java源文件中可以有多个类吗?(内部类除外)有什么条件?带着这个疑惑,动手建几个测试类,

揭开心中的疑惑。以下是解开疑惑过程:

 package test;
/**
 * 一个.java源文件中可以有多个类吗?(内部类除外)有什么条件?
 * 可以的  
 *但是只能有一个public类, 而且如果有public类的话,这个文件的名字要和这个类的名字一样。
 *如果都没有public类,名字可以不和这个类一样。
 */
public class MultiClass {
 int i = 0;
}

class B {
 String str = "b";
}

class C {
 String str = "c";

/*源文件javac出多个class文件出来!是怎么回事?
1.   你在一个文件里定义了几个类的时候,会出现这种情况,比如  
  public   class   A   {}  
  class   B   {}  
  class   C   {}  
  这样每个   class   会是一个   .class     文件  
   
  2.   你定义了内部类的时候会出现这种情况,如  
  public   class   A   {  
          class   B   {  
          }  
  }  
  这会产生两个   class   文件,一个   A.class,一个   A$B.class  
   
  3.   使用了匿名类的时候出出现这种情况,如  
  public   class   A   {  
          void   xxx()   {  
                    button.addActionLisener(new   ActionListener()   {...});  
          }  
  }  
  这也会产生多个   class,一个   A.class,一个   A$1.class  
  }

 */

原文地址:https://www.cnblogs.com/xuxinstyle/p/9345691.html