• Java 内部类


    内部类是在类级别(逻辑相关的类)上的封装,实现类名隐藏和进一步封装代码。内部类不同于组合。内部类与外部类的通信。

    1. 链接到外部类(enclosing object)

    当生成一个内部类的对象时,此对象与制造它的外为对象(enclosing object)之间就有了一种关系,它能访问其外围对象的所有成员,而无需任何条件。内部类拥有其外围类的所有元素的访问权(闭包机制,这与 C++ 的嵌套类的设计十分不同,在 C++ 中只是单纯的名字隐藏机制,与外围对象没有关系,也没有隐含的访问权)。

    public class ArrayList<E> {
    
        public Iterator<E> iterator() {
            return new Itr();
        }
    
        // Itr 内部类共享其外层类的全部成员
        private class Itr implements Iterator<E> {
        }
    }

    2. Java 内部类与 C++ 的友元

    java怎么没有友元类?

    Java 采用内部类实现 C++ 友元的功能。事实上内部类就是一种面向对象的闭包,因为内部类有他的宿主类的一个 reference(所谓闭包是指一个对象,它记录了来自于创建它的作用域的所有信息),内部类本身可以利用这个引用访问宿主类的一切变量,包括 Private 级别。这不就是一个语法上的,一个类的所有成员变量能被另一个类完全访问吗?内部类不正是能当做宿主类的友元吗?

    这一点参考 Java 实现 Memento 模式(备忘录模式)。

  • 相关阅读:
    gdb remote 使用
    gdb调试的layout使用
    经典名言--教父
    GDB dump mem example和命令
    再谈音响的七个频段,个个是真理
    Ubuntu 16.04下GDB调试
    shell脚本中if的“-e,-d,-f”
    ubuntu下makeinfo安装,其实真正安装的是texinfo包
    【svn】svn的使用
    【linux】监控磁盘情况并自动删除备份文件
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9421202.html
Copyright © 2020-2023  润新知