java 内部类

内部类:

类一共有五个成员,成员可以与外部其他类进行交互,所以有访问修饰符:public, protect, 默认, private;

  • 属性;
    • 静态属性;
    • 普通属性;
    • 常量;
  • 代码块【构造器的补充】;
    • 静态代码块;
    • 普通代码块;
  • 构造器;
    • 创建对象执行必须执行的显式初始化;
  • 方法;
    • 静态方法;
    • 普通方法;
    • 抽象方法;
    • 不可继承方法;
  • 内部类;
    • 定义在局部的【代码块和方法内】:
      • 局部内部类;
      • 匿名内部类;
    • 定义在成员的位置上:
      • 成员内部类;
      • 静态内部类;

内部类:

可以直接访问外部类的所有成员,包括私有的;

  • 定义在局部的内部类:

    1. 作用域相当于局部变量,不能加修饰符,可以加 final

    2. 可以直接访问外部类的成员,当有同时属性的时候,遵守就近原则,或特质:外部类.this.属性名;

    3. 外部类访问内部类成员,需要创建对象,通过对象访问。

    4. 在编译器内部,匿名类会被命名为:外部类名$序列

      //匿名内部类格式
      new BB类/接口(参数列表){};
      <=>
      class xxx extends BB[implements 接口]{
      }
      new xxx();//不允许重写xxx构造器,所以参数列表传递给,父类构造器; 
      
  • 定义在成员位置的内部类;

    • 外部其他类访问成员内部类的方式:

      1. 外部类的实例对象.new 内部类名();
      2. 可以由工厂模式获取,同过方法获取实例对象;
    • 当内部类和外部类成员重名时,内部类访问的话,遵守就近原则,当访问外部成员时:外部类名.this.成员;

    • 静态内部类只能访问外部静态成员;

    • 对于外部其他类实例化静态内部类时:

      new 外部类名.内部类名();
      
posted @   烟雨断桥  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示