zoukankan      html  css  js  c++  java
  • 静态方法中不能new内部类的实例对象的总结

    复制代码
    class Test{
         public void main(String[] args){
        A testA=new A();  //这里会出现问题
            new Thread(new Runnable(){
                public void run(){
                testA.printout();
             }
             }).start();
             System.out.println("aaaaaa");  
        }
      
         class A{
                  public void printout(){
                  System.out.println("aaaaaa");    
            }
          }
      }
    复制代码
    静态方法中不能new内部类的实例对象。这是为什么了? 
    内部类的最重要的一个特点就是它可以直接访问它外部类的成员变量。成员变量是对象身上的。对象创建完成了,才会为成员变量分配空间。能调用成员变量,意味着一定有了实例对象.
    main方法是静态的,它执行的时候可以不用创建那个对象。这就矛盾了。
    main方法运行的时候没有任何外部类的实例对象。我们的内部类的实例对象创建了它又可以访问外部类的成员变量,外部类的实例对象在哪儿了?
    所以这个原因,我们下面的代码就要进行改写 要想创建内部类的实例对象,必须创建外部类的实例对象。
    复制代码
    //  修改之后的代码如下:
     class Test{
         public void main(String[] args){
        new Test().init();
             System.out.println("aaaaaa");  
        }
      
      public void init(){
        A testA=new TestA();
            new Thread(new Runnable(){
                public void run(){
                testA.printout();
             }
             }).start();
        }  
      class A{
                  public void printout(){
                  System.out.println("aaaaaa");    
            }
          }
      }
    复制代码
    方法的调用一定是要通过对象调用的。
    哪个对象调用了这个方法,创建内部类实例对象的时候所使用的外部类的实例对象就是谁
  • 相关阅读:
    SQL整理5
    SQL整理1 数据类型
    SQL整理2
    JavaScript 的DOM操作
    JavaScript 数据类型
    JavaScript
    CSS样式表
    sqlserver数据库 提纲
    Python基础第十二天:二分法算法
    Python基础第十一天:递归函数
  • 原文地址:https://www.cnblogs.com/ldq2016/p/6626561.html
Copyright © 2011-2022 走看看