一、关于编译器提示错误The public type ress1 must be defined in its own file的原因
新手容易犯错的地方
publicclassTest{ public static void main(String args[]){ newB(); } } public classA { public A(){ System.out.println("I am A" ); } {System.out.println("A");} static{System.out.println("static A");} } public class B extends A{ public B(){ System.out.println("I am B" ); } {System.out.println("B");} static{System.out.println("static B");} }
编译器提示错误,提示A类和B类应该定义在自己的文件之中。可是我明明记得是可以在一个文件之中写多个类,然后通过上网搜索,发现是可以在一个java文件中编写
多个类,不过只能有一个public所修饰的类,所以将A和B类前的public修饰符去掉即可,最终代码如下:
public class Test{ public static void main(String args[]){ new B(); } } class A { public A(){ System. out.println("I am A" ); } {System. out.println("A");} static{System.out .println("static A");} } class B extends A{ public B(){ System. out.println("I am B" ); } {System. out.println("B" );} static{System.out .println("static B");} }
1、如果类A被声明为公共的(public),那么必须将类A保存在名为A.java的文件中;
2、反之,在一个文件中最多包含一个顶级的公共类,并且该公共类的名字与文件名相同。比如文件A.java中,允许定义一个或多个类,但最多允许一个顶级的公共类,此类名为A。此处强调的顶级的意思是,允许非顶级的公共类存在,如内部公共类等。