一个.java源文件中可以有多个类吗?(内部类除外)有什么条件?带着这个疑惑,动手建几个测试类,
揭开心中的疑惑。以下是解开疑惑过程:
package test;
/**
*
一个.java源文件中可以有多个类吗?(内部类除外)有什么条件?
*
可以的
*但是只能有一个public类,
而且如果有public类的话,这个文件的名字要和这个类的名字一样。
*如果都没有public类,名字可以不和这个类一样。
*/
public
class MultiClass {
int i = 0;
}
class B {
String str = "b";
}
class C {
String str =
"c";
}
/*源文件javac出多个class文件出来!是怎么回事?
1.
你在一个文件里定义了几个类的时候,会出现这种情况,比如
public
class A {}
class
B {}
class C
{}
这样每个 class
会是一个 .class
文件
2.
你定义了内部类的时候会出现这种情况,如
public
class A
{
class B
{
}
}
这会产生两个
class 文件,一个 A.class,一个
A$B.class
3.
使用了匿名类的时候出出现这种情况,如
public
class A
{
void xxx()
{
button.addActionLisener(new ActionListener()
{...});
}
}
这也会产生多个
class,一个 A.class,一个
A$1.class
}
*/
java文件允许有多个class,但是只能有一个用public修饰。因为java的编译机制是从这个public开始的。如果,你加的这个里面方法不是public static void main(),编译机制就会出错了。而且,你加的这个public的class名必须是你java文件的文件名,否则也无法编译。
package testclass; public class classone { public static void main(String[] args) { Test tes=new Test(); Test.innertest inner=tes.new innertest(); inner.names(); System.err.println("main"); tes.name(); } } class Test{ public class innertest{ public void names() { System.err.println("test"); } } public void name() { System.err.println("Test"); } }
原文:http://www.cnblogs.com/wuyuankun/p/3730771.html