【发布时间】:2021-09-26 12:19:11
【问题描述】:
这是否可以防止派生类实例访问基类的公共成员(如方法、变量等)?例如;
public class BaseClass
{
public int m_a;
}
public class DerivedClass : BaseClass
{
base.m_a = 10; //good
}
但是,我不想这样;
DerivedClass dc = new DerivedClass();
dc.m_a = 20; //not good
这可能吗?
【问题讨论】:
-
为什么你想这样做?
-
这不只是
protected而不是public -
@Charlieface 不是这样,因为这也会对
BaseClass的消费者隐藏它。 -
public new void m_a() { }inDerivedClass会隐藏现有字段 - 但它有点难看。 ;) -
@mjwills 鉴于
DerivedClass的实例本身 是BaseClass的实例,无论如何我不知道如何以这种方式区分它们。所以它必须是protected或public。如果DerivedClass可以用protected或private覆盖,那么您就只能失望了。 (而且你不能覆盖字段)
标签: c# class inheritance base derived