您的位置:首页 > 其它

内部类初次使用

2016-01-04 10:26 375 查看
在静态方法中不能new内部类的实例对象,内部类的特点是能访问外部类的成员变量,因为只有外部类的对象创建完成后,才能分配空间,内部类才能访问外部类的成员变量
如果想创建内部类的实例对象,必须先创建外部类的实例对象。

public class TraditionalThreadSynchronize {
/*
在静态方法中不能new内部类的实例对象,内部类的特点是能访问外部类的成员变量,因为只有外部类的
对象创建完成后,才能分配空间,内部类才能访问外部类的成员变量
如果想创建内部类的实例对象,必须先创建外部类的实例对象
*
* */
public static void main(String[] args) {
/* final outputer out=new outputer();
上述代码会出现错误提示,TraditionalThreadSynchronize.this 不能在静态方法中被引用*/
new TraditionalThreadSynchronize().init();

}
private String className;
private void init(){//运行时候,外部类的对象一定已经先创建完成了
final outputer out=new outputer();
new Thread(new Runnable() {
@Override
public void run() {
while(true){
try {
Thread.sleep(10);
out.output("leixingbang");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
while(true){
try {
Thread.sleep(10);
out.output("zhangxiaoxiang");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
class  outputer{//内部类
public  void output(String name)//此方法并非线程安全
{
String str=className;//说明可以访问外部类对象
int len=name.length();
for(int i=0;i<len;i++)
{
System.out.print(name.charAt(i));
}
System.out.println();
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: