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.   

    1.在Test类实例化的时候
      每个实例都会执行
      ////////////////////////////
      A a1 = new A();
      AA a2 = new AA();
      AAA a3 = new AAA();
    ////////////////////////////2.public类的类名必须和文件名一致
    你前面既然Test类是public的,那源文件的文件名就肯定是 Test.java
    那又和下面的public类AnotherTest矛盾
    总的来说,就是一个源文件里,最多只能有1个类被定义为public,切这个类的类名和源文件名要保持一致
      

  2.   

    你应该是把上面那些类都写到一个文件里了 一个文件里只能有一个类为public 因为文件名要和public的类名一致,你现在有两个public,当然编译要出错了 !!!