一個.java文件中可以有很多類。不過注意以下幾點:
1、public 權限的類只能有一個(也可以一個都沒有,但最多隻有1個)
2、這個.java文件的文件名必須是public類的類名(一般的情況下,這裏放置main方法是程序的入口。)
3、若這個文件中沒有public的類,則文件名隨便是一個類的名字即可
4、用javac 編譯這個.java文件的時候,它會給每一個類生成一個.class文件
以下就是一個.java文件中有多個類的例子,順便理一下線程的開啓。
import java.util.Date;
public class ThreadInnerClass {
/**
* @主要看使用內部類怎樣實現一個線程
*/
public static void main(String[] args) {
//方式一:
ThreadInner thread1=new Thread(new ThreadInner());
//thread1.start();//相當於new Thread(實現Runnable接口)
//方式二:
// ThreadInner thread2= new Thread(new ThreadInner(),"線程1")//給這個線程取個名字,叫線程1
//thread2.start();//同上,相當於new Thread(實現Runnable接口),ThreadInner對象操作線程
//方式3:
// new ThreadInner().run();//線程也會運行,不過是這個main在操作線程。
//方式4:開啓一個新線程,並且實現runnable接口,在run()中寫執行代碼.這就是用匿名內部類
/*
new Thread(new Runnable(){//相當於是實現runnable接口
@Override
public void run(){
while(true)
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("1");
}
}
}).start();
*/
// 方式5:
/*
new Thread(){//直接重寫run方法
@Override
public void run(){
System.out.println("2");
}
}.start();
*/
//方式6:下面有一個類,繼承Thread,s所以可以直接new一個
/*
new ThreadInner2(){//相當於繼承Thread,重寫run方法。和上面直接重寫run方法同理
@Override
public void run(){
System.out.println("3");
}
}.start();
*/
}
}
class ThreadInner implements Runnable{
@Override
public void run(){
while(true)
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" " + new Date());
}
}
}
class ThreadInner2 extends Thread{
}