静态内部类

内部类,一个被称为静态嵌套类,一个被称为内部类。
从字面的角度解释是这样的:
什么是嵌套?嵌套就是我跟你没关系,自己可以完全独立存在,但是我就想借你的壳用一下,来隐藏一下我自己,,不想被其他类依赖。
什么是内部?内部就是我是你的一部分,我了解你,我知道你的全部,没有你就没有我。(所以内部类对象是以外部类对象存在为前提的)

静态内部类的实例不需要先实例化外部类成员,可直接实例化。

①静态内部类中可以有非静态的方法

②当内部类中有静态方法或者静态成员变量时,一定是静态内部类

 

public class Outerclass {
  static class Inner{
    private void innerVoidMethod(){//静态内部类中可以有非静态的方法
      Outerclass.outerStaticMethod();//静态内部类可以访问外部类的静态成员和方法
      new Outerclass().outerVoidMethod();
      //Outerclass().outerVoidMethod();//error, 静态内部类不可以直接访问外部类的非静态成员和方法
    }
    private static void innerStaticMethod(){
      Outerclass.outerStaticMethod();//静态内部类可以访问外部类的静态成员和方法
      //Outerclass().outerVoidMethod();//error, 静态内部类不可以直接访问外部类的非静态成员和方法
    }
  }

   /*class Inner2{  //error,当内部类中有静态方法或者静态成员变量时,一定是静态内部类
    private static void inner2StaticMethod(){
    }
  }*/

  private void outerVoidMethod(){
    System.out.println("outerVoidMethod");
  }
  private static void outerStaticMethod(){
    System.out.println("outerStaticMethod");
  }
  public static void main(String[] args) {
    new Inner().innerVoidMethod();//静态内部类的实例不需要先实例化外部类成员,可直接实例化
    Inner.innerStaticMethod();
  }
}

outerStaticMethod
outerVoidMethod
outerStaticMethod
outerVoidMethod

posted @ 2017-12-09 11:10  tonggc1668  阅读(268)  评论(0)    收藏  举报