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