简单问题,看看这个不在任何函数里面的语句是在哪里执行的?有什么作用?
import   java.util.*;   
 class   A 
 { 
       A()   {System.out.println( "A ");} 
 }   
 class   B 
 { 
       B()   {System.out.println( "B ");} 
 }   
 class   C 
 { 
       C()      {System.out.println( "A ");} 
 }   
 class   AA   extends   A 
 { 
          AA()   {System.out.println( "AA ");} 
 }   
 class   AAA   extends   AA 
 { 
          AAA()   {System.out.println( "AAA "); 
 }   
 public   class   Test   extends   AAA 
 { 
       A   a1   =   new   A(); 
       AA   a2   =   new   AA(); 
       AAA   a3   =   new   AAA();   
       public   static   void   main(String   args[]) 
       { 
             new   AAA(); 
       } 
 }   
 public   class   AnotherTest 
 { 
          AnotherTest()   { "当这个类加入以后,就提示编译错误了! "} 
 }   
 现在我的问题如下: 
 1、下面的代码 
 //////////////////////////// 
       A   a1   =   new   A(); 
       AA   a2   =   new   AA(); 
       AAA   a3   =   new   AAA(); 
 //////////////////////////// 
 不在任何函数里面,它在什么时候开始执行?功能是什么?   
 2、为什么我加入 
 public   class   AnotherTest 
 { 
          AnotherTest()   { "当这个类加入以后,就提示编译错误了! "} 
 } 
 就提示编译出错,但是当我去掉Public以后编译错误就消失了?
------解决方案--------------------1.在Test类实例化的时候 
   每个实例都会执行 
   //////////////////////////// 
   A a1 = new A(); 
   AA a2 = new AA(); 
   AAA a3 = new AAA(); 
 ////////////////////////////   
 2.public类的类名必须和文件名一致 
 你前面既然Test类是public的,那源文件的文件名就肯定是 Test.java 
 那又和下面的public类AnotherTest矛盾 
 总的来说,就是一个源文件里,最多只能有1个类被定义为public,切这个类的类名和源文件名要保持一致
------解决方案--------------------同意楼上
------解决方案--------------------你应该是把上面那些类都写到一个文件里了 一个文件里只能有一个类为public 因为文件名要和public的类名一致,你现在有两个public,当然编译要出错了 !!!