• Java 中的 匿名类


    什么是内部类?

    在一个类中定义另一个类,这样定义的类称为内部类。包含内部类的类称为内部类的外部类。

    如果想要通过一个类来使用另一个类,可以定义为内部类。

    内部类的外部类的成员变量在内部类仍然有效,内部类中的方法可以调用外部类的方法。不论静态还是非静态的,内部类都可以直接调用外部类中的属性。

    内部类的类体中不可以声明类变量和类方法。

    内部类可以由外部类使用外部类中在函数中创建内部类的对象完成。

    如果内部类的权限是非私有的,非静态的,就可以在其外部其他程序中被访问到,通过创建外部类对象访问内部类

    如果内部类是静态的,非私有的,静态成员可以直接类名调用,非静态成员通过创建外部类对象使用。

    class Outer{
        int a=5;
        static int b=6;
        void show() {
            System.out.println("hello world");
        }
        class Inner{
            void use() {
                System.out.println(a);//5
                System.out.println(b);//6
                show();//hello world
                
            }
        }
        void create() {
            new Inner().use();
        }
    
    }
    
    public class Demo {
    
        public static void main(String[] args) {
            new Outer().create();
            Outer.Inner oi=new Outer().new Inner();
            oi.use();
    
        }
    
    }

    内部类的字节码不一样,编程外部类$内部类名

    将内部类定义在局部位置上。可以访问外部类的所有成员,如果内部类是静态的,那么声明周期与普通的 static 没有区别。

    匿名类

     匿名类:就是没有名称的类,其名称由Java 编译器给出,匿名类就是利用父类的构造函数和自身类体构成的一个类。

     

    父类是子类集成或者要实现的外部类或者接口。

    匿名类可以继承父类的方法,也可以重写父类的方法。

    匿名类可以访问外部类的成员变量和方法

    匿名类由于是一个 new 的结果,所以其实可以赋值给一个父类的对象。分为俩类:成员匿名与局部匿名类

  • 相关阅读:
    ParamCount、ParamStr
    写一个可拖动的 TShape 回复 "韦韦" 的问题
    读十六进制文本到 Btye 数组的函数 回复 "峰哥!!!" 的问题
    网站速度优化
    [新功能]新增分类浏览页面
    [CN.Text开发笔记]嵌套Repeater的问题
    中秋祝福
    10 Golden rules for publishing your blog
    HttpCompressionModule 6的一个Bug及使用效果
    [CN.Text开发笔记]OnInit与运行期数据绑定
  • 原文地址:https://www.cnblogs.com/bytecodebuffer/p/11393778.html
Copyright © 2020-2023  润新知