pin*_*x33 10 oop inner-classes
我正在阅读一些帖子并注意到内部课程的样本.我最近看到了很多,特别是在我浏览的MSDN上的几个例子中.我以前从来没有使用内部类(但也许我真的应该这样)所以我想知道究竟是什么意思?我假设一个内部类(至少是一个私有的)只能用于主类本身,所以将内部类的任何功能简单地合并到外部类的某些方法中就不一样了吗?内部阶级背后有一个OO理由吗?
我主要考虑的是C#,但我认为这适用于任何支持内部类的OO语言.
以msdn为例:CharacterCollection和WordCollection是Document类中的公共类.如果这些不在Document类之外会有什么区别?
如果内部类仅与其包含(或外部)类相关,则它们非常有用.
私有内部类的一个很好的例子是当你需要管理外部类中永远不会暴露的东西时.在下面的示例中,缓存管理器处理对象的缓存和卸载.它使用私有内部类来存储指向它想要缓存的对象的指针,以及它上次访问的时间.用户这个假设的CacheManager所需的代码永远不会知道CacheEntry.
class CacheManager
{
private:
class CacheEntry
{
private:
Object* m_pObjectToCache;
int m_nTicksSinceTouched;
}; // eo class CacheEntry
std::map<int, CacheEntry*> m_Cache;
public:
Object* getObject(int _id);
}; // eo class CacheManager
Run Code Online (Sandbox Code Playgroud)
然后是公共内部阶级的案例.我会使用嵌套类,如果名称(我想保持简单),我在其他地方的冲突:
class Tree
{
public:
// public class.. Node might pertain to anything in the code, let's keep it simple
// and clear that THIS Node belongs and works with THIS Tree class.
class Node
{
};// eo class Node
}; // eo class Tree
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1654 次 |
| 最近记录: |