一个.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{
}