分享

java内部类与内部类的闭包和回调

 孤独一兵 2016-10-21

1.成员内部类

  • 可以把一个内部类看做一个成员。成员内部类可以无条件访问外部类的所有成员属性和成员方法。
    java内部类与内部类的闭包和回调

  • 当成员内部类拥有和外部类同名的成员变量或者方法时,默认情况下访问的是成员内部类的成员。如果要访问外部类的同名成员,需要以下面的形式进行访问:
    java内部类与内部类的闭包和回调外部类访问内部类,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问。
    java内部类与内部类的闭包和回调

  • 成员内部类是依附外部类而存在的,也就是说,如果要创建成员内部类的对象,前提是必须存在一个外部类的对象。创建成员内部类对象的一般方式如下:java内部类与内部类的闭包和回调

2.局部内部类

  • 局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及static修饰符的。java内部类与内部类的闭包和回调

3.嵌套内部类

  • 嵌套内部类,就是修饰为static的内部类。声明为static的内部类,不需要内部类对象和外部类对象之间的联系,就是说我们可以直接引用outer.inner,即不需要创建外部类,也不需要创建内部类。java内部类与内部类的闭包和回调
    java内部类与内部类的闭包和回调

4.匿名内部类

  • 匿名内部类是我们使用最多的,因为我们并不想给它赋予名字,于是就有了匿名。匿名内部类需要提前定义的
    java内部类与内部类的闭包和回调

5.闭包和回调

  • 闭包(Closure)是一种能被调用的对象,它保存了创建它的作用域的信息。JAVA并不能显式地支持闭包,但是在JAVA中,闭包可以通过“接口+内部类”来实现。

    例如:一个接口程序员和一个基类作家都有一个相同的方法work,相同的方法名,但是其含义完全不同,这时候就需要闭包。java内部类与内部类的闭包和回调

    闭包实现代码如下:java内部类与内部类的闭包和回调

    在子类中定义了遵循程序员接口规则的内部类,然后使用内部类实现程序员的work()方法回调code()方法,在子类中直接实现父类作家的work()方法。

6.内部类的作用

  • 内部类可以很好的实现隐藏。

    一般的非内部类,是不允许有 private 与protected权限的,但内部类可以

  • 内部类拥有外围类的所有元素的访问权限

  • 可是实现多重继承

  • 可以避免修改接口而实现同一个类中两种同名方法的调用。

java内部类与内部类的闭包和回调

文/breakingsword(简书作者)

原文链接:http://www.jianshu.com/p/367b138fe909

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多