• Java 内部类


    内部类

    1. 如果A类需要直接访问B类中的成员 B类又需要建立A类的对象 这时 为了方便设计和访问 直接将A类定义在B类中 就可以了 A类就称为内部类 内部类可以直接访问外部类中的成员 而外部类想要访问内部类 必须要建立内部类的对象

    class Outer {
        int num = 4;
        class Inner {
            void show() {
                System.out.println("inner show run " + num);
            }
        }
    
        public void method() {
            Inner in = new Inner();//创建内部类的对象
            in.show();//调用内部类的方法
        }
    } 

    2. 当内部类定义在外部类中的成员位置上 可以使用一些成员修饰符修饰 private, static

    1> 默认修饰符

    直接访问内部类格式 外部类名.内部类名 变量名 = 外部类对象.内部类对象;

    Outer.Inner in = new Outer.new Inner(); //这种形式很少用

    但是这种应用不多见 因为内部类之所以定义在内部就是为了封装 想要获取内部类对象通常都通过外部类的方法来获取 这样可以对内部类对象进行控制

    2> 私有修饰符

    通常内部类被封装 都会被私有化 因为封装性不让其他程序直接访问

    3> 静态修饰符

    如果内部类被静态修饰 相当于外部类 会出现访问局限性 只能访问外部类中的静态成员

    注意: 如果内部类中定义了静态成员 那么该内部类必须是静态的

    3. 内部类编译后的文件名为 "外部类名$内部类名.java"

    4. 内部类可以直接访问外部类中的成员

    那是因为内部中都持有一个外部类的引用 这个是引用是 外部类名.this

    内部类可以定义在外部类中的成员位置上 也可以定义在外部类中的局部位置上

    当内部类被定义在局部位置上 只能访问局部中被final修饰的局部变量

     

    匿名内部类

    1. 没有名字的内部类 就是内部类的简化形式 一般只用一次就可以用这种形式 匿名内部类其实就是一个匿名子类对象 想要定义匿名内部类 需要前提 内部类必须继承一个类或者实现接口

    2. 匿名内部类的格式 new 父类名&接口名() { 定义子类成员或者覆盖父类方法 }.方法

    3. 匿名内部类的使用场景

    当函数的参数是接口类型引用时 如果接口中的方法不超过3 可以通过匿名内部类来完成参数的传递

    其实就是在创建匿名内部类时 该类中的封装的方法不要过多 最好两个或者两个以内

  • 相关阅读:
    30 tcp编码, udp编码 pycharm输出带颜色, tcp实现的聊天室
    29 网络相关知识 socket
    c++ 程序
    solr 5.4安装
    Linux之ss
    filezilla 证书使用
    mongodb安装,使用
    wireshark抓包发现1506字节包
    python之模块的显要属性
    正则表达式之去除空行
  • 原文地址:https://www.cnblogs.com/huangyi-427/p/4705002.html
Copyright © 2020-2023  润新知