读书人

简单有关问题看看这个不在任何函数里

发布时间: 2012-02-03 22:02:47 作者: rapoo

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

读书人网 >J2SE开发

热点推荐