继承调用类的变量
本文关键字:变量 调用 继承 | 更新日期: 2023-09-27 18:15:05
如果我创建一个私有嵌套类,我如何从调用类访问变量和方法?
的例子:
public class ClassA
{
protected int MyVar=100;
public MethodA()
{
// <some code>
myObjectClassB.DoSomething();
// <some code>
}
private class ClassB
{
public DoSomething()
{
}
}
}
在上面的例子中,我需要ClassB能够访问ClassA。MyVar——这可能吗?
当你构造一个ClassB的实例时,给它一个对拥有它的ClassA的引用。
private class ClassB
{
private readonly ClassA _owner;
public ClassB(ClassA owner)
{
_owner = owner;
}
public DoSomething()
{
}
}
值得注意的一点是,私有嵌套类实际上可以通过_owner访问ClassA的私有成员。当您有一个内部助手类需要访问该类的整体私有状态时,这通常会派上用场。
好的,Dan Bryant比我先说了,只是他忘了补充一点,为了访问它,你必须将受保护的变量设为内部。除了命名约定之外,嵌套类与其他非嵌套类没有什么不同。它不会获得它所嵌套的类的任何特殊特权。这纯粹是一种组织性的东西。
编辑:好吧,也许我错了。在此之后,我实际上读了Dan的回答的其余部分,似乎我错了:) 编辑2:经过几次搜索,我发现我的想法并不完全错误,但这只是取决于你正在使用的编译器。旧的c++规范不允许这样做,但大多数编译器都允许这样做,最终他们修改了文档,以反映编译器中实际发生的情况。