我的博客
欢迎来到我的博客
bunny.icu

第10章内部类

第10章内部类
  1. 内部类可以访问外围类的字段和方法,就像自己拥有他们似的。内部类与C++的嵌套类设计非常不同,在C++中只是单纯的名字隐藏机制,与外围对象没有联系,也没有隐含的访问权。
  2. 在内部类中,直接用this指针,指向的是内部类的对象,如果用外部类名.this指向的就是外部类的对象。
  3. 在内部类的外部,内部类(除了嵌套类)的对象是不能直接创建的,必须先创建外部类对象,再用外部类对象.new来创建内部类的对象。这是因为内部类对象会暗暗地连接到它的外部类对象上。
  4. 内部类可以用private和protected修饰(普通类是不行的),用private修饰可以阻止在外部用new构造。
  5. 内部类可以写在方法中,这样的内部类是方法的一部分,而不是方法所属的类的一部分,在方法之外不能访问内部类。
  6. 在任意作用域可以嵌套内部类,例如if和for语句,的内部类会与其他类一起编译,在作用范围内和普通的类一样,但在作用范围之外是不可用的。貌似这样嵌套的内部类不能获取外部的值。
  7. 匿名内部类,就是在要返回一个对象的位置,继承一个类(或实现接口)写出的类,这个匿名内部类会自动向上转型。
  8. 如果匿名内部类是有参的,只需要将参数传递给父类的构造器。
  9. 返回匿名内部类的对象的方法的参数,如果提供给匿名内部类的父类的构造器,就不需要用final来修饰,如果要让匿名内部类直接使用,就必需用final来修饰。
  10. 匿名内部类由于没有名字,所以不能创建命名构造器,但通过实例初始化,可以达到为匿名内部类创建一个构造器的效果。我的个人理解,就是把要在构造器种写的代码,写在构造块中。
  11. 声明为static的内部类是嵌套类,嵌套类对象不需要与外围类对象通信,所以可以直接用new创建。
  12. 嵌套类是static的,所以不能访问非静态的外围类对象。
  13. 普通的内部类不能有static字段,也不能包含嵌套类,但嵌套类可以包含这些东西。
  14. 嵌套类可以是接口的一部分(接口中的类自动是public static的),接口中的嵌套类甚至可以实现外围接口。
  15. 接口可以嵌套在其他接口中(第九章讲过)。
  16. 内部类可以有多层。
  17. 外部类里创建多个内部类,可以达到多继承的目的。在外部类里重写内部类的方法,就可以通过外部类的对象直接调用这些方法。
  18. 在计算机程序设中,回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数),是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。这段话来自维基百科,代码我实在看不懂。

版权声明


本作品系原创, 转载须遵循 CC BY-NC-ND 4.0 许可协议
本文标题:第10章内部类
本文链接:https://www.bunny.icu/archives/1167

推荐文章

发表评论

textsms
account_circle
email

bunny.icu

第10章内部类
第10章内部类
扫描二维码继续阅读
2018-09-10