黑马程序员技术交流社区
标题:
内部类
[打印本页]
作者:
田向向
时间:
2012-7-4 16:48
标题:
内部类
本帖最后由 田向向 于 2012-7-4 21:54 编辑
刚才查有关内部类的资料时看到这么一个例子,没有看明白,找高手请教一下:
package mianxiangduixiang;
public class thistest {
public void Test(final String name) //1
{
new Thread(new Runnable(){ //2
public void run()
{
System.out.println(name); //3
}
}).start(); //4
}
public static void main(String[] args) {
new thistest().Test("黑马程序员");
}
}
我不明白的是,2和4 是什么意思??有什么用?这个程序的运行过程是怎样的?
为什么这里的参数一定要是用final才能都传给内部类呢?
请高手们不吝赐教
作者:
韦念欣
时间:
2012-7-4 16:55
本帖最后由 韦念欣 于 2012-7-4 16:56 编辑
这段代码使用了多线程技术,2是创建一个匿名内部类,重写run方法,也就是想让线程执行的代码,4是开启线程,让线程处于就绪状态。
匿名内部类中,如果要使用外部类的变量,那么这个变量必须使用final修饰。
作者:
康子龙
时间:
2012-7-4 17:01
你这段代码里涉及到了多线程,2是new了一个匿名的线程实例,里面重写了run(),第四步就是激活了线程。应该这么个意思
作者:
康子龙
时间:
2012-7-4 17:02
额,原来2楼有版主的回答。。。。这回露怯了,向版主学习学习
作者:
dev
时间:
2012-7-4 17:16
其实程序中2到4,是连着的一个整体。这算是多线程和内部类结合的知识点吧。
在new Thread()中要传入一个Runnable接口的子类对象,而程序中就是直接在
方法中new一个Runnable的子类对象
,这也是一个匿名内部类的做法,接着在run()
方法主体中打印局部变量name,而
内部类还有一个特点就是局部内部类要访问局部
变量时,该局部变量也必须得用final修饰的
,这是语法上的要求。接着程序就调用
start()方法启动线程了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2