Java内部类

内部类

  • 内部类,在一个类的内部定义的类
    interface OuterIFC { 
    void  method();
    }
    public class Outer{
         public  class  Inner1  {}//实例内部类
         public  static  class Inner2 {} //静态内部类
         private  OuterIFC o =new OuterIFC() {
               int  i=1 ;
               void method() {i++;}
    };//实现了OuterIFC 接口的匿名类
    OuterIFC  getInstance(){retern o;}
    void outerMethod(){
       class Inner3{};//局部内部类
       Inner3 in=new Inner3 ();
    }
      }// end of  class Outer
    
    
    
    

     

  • 匿名类是一种特殊的内部类

内部类的特性

实例内部类可以直接访问嵌套类的成员,如果是定义在方法中的局部内部类,还可以访问该方法中的final型的局部变量和final型的方法参数。参见ClassA.java

class ClassA{
  private  int vA=o;
  class B(int vB=vA;)
void methodA(final int param1,int param2){
  final  int  localIV=0;
class C {
  int vC;
  void methodC(){
    int v1=vA;//合法
    int v2=localIV//合法
    int v3=param1//合法
    int v4=param2//非法
      }
    }
  }
}
  • 静态内部类只能直接访问所嵌套类的静态成员,而不能直接访问所嵌套类的非静态成员,若一定要访问,必须通过外部嵌套类的实例访问。
Class  A{
   int vA=1;
   static classB{
  int  vB=vA;//非法
   }
}


Class C{
   int  vC=1;
    static classD{
 int vD= new C ().vC;//合法
   }
}
  • 实例内部类不能声明任何static成员,静态内部类中可以声明。
上一篇:C语言 va_arg 宏 - C语言零基础入门教程


下一篇:操作系统真象还原实验记录之实验二十一:实现printf