Inner Class 内部类 (to be Cont...)

内部类的一些笔记:

  • 外部类(Outer Class) 可以访问内部类 (Inner Class) 的非 private 成员
  • 内部类 (Inner Class) 可以访问外部类(Outer Class) 的所以成员,包括 private 成员
  • 内部类 (Inner Class) 会自动持有外部类(Outer Class) 的引用

Nested Class (静态内部类):

     当把内部类声明为 static 时,这个内部类也称为 Nested Class. 由于被声明为 static, 他和外部类的通信将受一定程度的影响. 一般的内部类不可以有静态块,静态域或者其他静态内部类; 而Nested Class 无此限制.

  • 创建 Nested Class 的实例时候不需要外部类的实例
  • Nested Class  不可以访问外部类的非 static 成员

Why Inner Class?

    内部类还具有以下特征:

  1. 内部类可以有多个实例,每一个实例,对于外部类来说都有独立的信息
  2. 一个外部类可以有多个内部类,每个内部类可以针对同一抽象有不同的实现

    从以上两点可以看出,内部类可以解决多继承的问题.

 

    3.  内部类的实例创建并不与外部类的实例的创建紧联在一起

 

因此,内部类什么时候实例化,与外部类的实例化没多大关系,甚至可以单独实例化内部类.

 

Closure & Call back:

 

    Closure is an object that contains infomation from the scope in which it was created.

          ------<<Think in Java>>

 

  某种意义上,内部类就是 Closure.

Call Back 回调:

    回调的概念来自C语言的函数指针。一般的函数调用是通过给定方法名和参数,程序在编译期就知道了应该调用调用栈中的哪个方法。这是静态调用。有时候程序需要在运行时动态的调用某些方法,这种调用不能是显式的,而是通过函数指针隐式的动态调用。函数指针可以理解为指向函数地址的变量,它在C/C++语言中有自己的声明方式。例如,

      void function(); // 函数定义

      ptr = function;  // p为函数指针,指向函数 function 的地址

在其他方法中调用 call(ptr) ,那么call()方法将调用ptr指向的函数。

     Java语言中没有函数指针的概念,那么java是怎么实现回调的呢?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值