日期:2014-05-20  浏览次数:20647 次

简单问题,看看这个不在任何函数里面的语句是在哪里执行的?有什么作用?
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,当然编译要出错了 !!!