我想问你为什么我们需要内部类,为什么要使用它们?
我知道如何使用内部类,但我不知道为什么..
最佳答案
一些内部类是公开公开的(例如 Java 中的 Map.Entry
),但这是迄今为止的异常(exception)情况,而不是常态。
内部类基本上是一个实现细节。
例如,Swing 广泛使用事件监听器的内部类。没有它们,您最终会用一堆您不需要看到的类污染全局命名空间(这可能会使它们的目的更难确定)。
本质上,内部类是作用域的一种形式。包访问从包外部隐藏类。私有(private)内部类从该类外部隐藏该类。
Java 中的内部类也是缺少函数指针或方法委托(delegate)(在 C# 中)或闭包的替代品。它们是将一个函数传递给另一个函数的方法。例如,在 Executor
类中你有:
void execute(Runnable r);
所以你可以传入一个方法。在 C/C++ 中可以通过以下方式实现:
void execute(void (*run)());
作为一个指向函数的指针。
关于c# - 为什么我们使用内部类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2707724/