内部类初次使用

来源:互联网 发布:八度网络面试 编辑:程序博客网 时间:2024/06/10 04:24
    在静态方法中不能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();        }    }}


0 0
原创粉丝点击