• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
阿呆草原狼
博客园    首页    新随笔    联系   管理    订阅  订阅
内部类

1、非静态内部类:

     a、四种访问权限:public   protected   default    private(与成员变量相同)

     b、如果外部内属性、内部类属性与内部里方法的局部变量同名,则可以使用this、外部类类名.this做为限定来区分。 

     c、非静态内部类成员可以访问外部类的private成员,但是反过来不成立,外部类不可直接使用非静态内部类成员,必须采用非静态内部类对象来调用访问实例成员。

     d、不允许在外部类的静态成员中直接使用非静态内部类(使用非静态内部类定义变量,创建实例);不允许在非静态内部类定义静态成员。

     e、非静态内部类不可有静态初始化块,但是可以包含普通初始化快。

 

2、静态内部类:

   a、可以包含静态成员,也可以包含非静态成员。静态内部类不能访问外部外部类的实例成员,只能访问外部类的静态成员。

   b、外部类不能直接访问静态内部类的成员,但是可以通过静态内部类类名来方位静态内部类的类成员,对象来访问实例成员。

   c、允许接口里定义内部类,默认使用public  static修饰

 

3、使用内部类:

  a、在外部类内部使用内部类

  b、在外部类以外使用内部类:如果内部类为private则不可访问,其他与类的成员访问权限相同。

        b1:定义内部类(静态和非静态)变量:outerClass.InnerClass   varname;

        b2:创建非静态内部类实例:outerInstance.new InnerConstructor();

                当构建非静态内部类的实例,必须保证子类构造器可以调用非静态内部类的构造器,调用非静态内部类的构造器,必须存在一个外部类的对象。

               

        b3:使用静态内部类:new ouerClass.InnerConstructor();

 

 

4、局部内部类:

    在方法内定义个类, 仅在方法内部有效。

 

5、匿名内部类:

    

        

        

 

   

6、通过内部类可以实现闭包回调。

posted on 2015-04-21 16:45  阿呆草原狼  阅读(181)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3