内部类、匿名内部类


内部类、匿名内部类
2019年10月23日
5:45
内部类:
将一个类定义在另一个类的里面,对里面那个类就称为内部类(内置类,嵌套类)


访问特点:
内部类可以直接访问外部类中的成员,包括私有成员
而外部类要访问内部类中的成员必须要建立内部类的对象



内部类可以直接访问外部类中成员,是因为内部类自动持有了外部类的引用—— 外部类名.this.成员变量




其他类访问外部类中内部类的成员

内部类、匿名内部类 - 图1

如果是其他类,要想访问内部类,肯定是要先建立内部对象的
而且要通过外部类.内部类进行指定



——————————————————————————————

匿名内部类

匿名内部类。就是内部类的简写格式。
有必须前提:
内部类必须继承或者实现一个外部类或者接口。
匿名内部类,其实就是一个匿名子类对象。

格式:new 父类 or 接口 {}{子类内容}


代码实现:
内部类、匿名内部类 - 图2

  • New 的左边是可以被命名的,以接口/父类 实例化对象的形式。




    代码实现2:

    使用匿名内部类的写法:
    内部类、匿名内部类 - 图3


    用内部类的写法:
    内部类、匿名内部类 - 图4



    相同的代码调用…
    内部类、匿名内部类 - 图5





    匿名内部类的使用场景:
    通常的使用场景之一:
    当函数参数是接口类型时,而且接口中的方法不超过三个。
    可以用匿名内部类作为实际参数进行传递


    正常写法
    内部类、匿名内部类 - 图6


    替换成匿名内部类
    内部类、匿名内部类 - 图7




    已使用 Microsoft OneNote 2013 创建。