博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 内部类
阅读量:5275 次
发布时间:2019-06-14

本文共 756 字,大约阅读时间需要 2 分钟。

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

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

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

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

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

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

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

转载于:https://www.cnblogs.com/mtcnn/p/9421202.html

你可能感兴趣的文章
java之jsp页面语法
查看>>
Sql常用语法
查看>>
位操作
查看>>
如何调试NativeSample
查看>>
在 ubuntu下面利用libpcap编程
查看>>
ios不响应presentModalViewController界面的处理
查看>>
Virtualization基础
查看>>
P2344 奶牛抗议
查看>>
人工智能实战_第三次作业_陈泽寅
查看>>
让开发也懂前端
查看>>
asp.net中退出登陆的相关问题(解决后退或直接粘贴地址进入网页的问题)
查看>>
Java实战之04JavaWeb-02Request和Response
查看>>
[转]Blue Prism Architecture
查看>>
彻底的卸载SQL Server2005
查看>>
C# Json格式转换成List集合
查看>>
最大化平均值 (二分搜索法)
查看>>
讲一下python的背景知识
查看>>
jdbc 驱动设置
查看>>
windows 编程 —— 消息与参数(定时器、初始化消息、改变大小)
查看>>
ES6基础知识清单
查看>>