【发布时间】:2014-11-01 22:12:37
【问题描述】:
假设我有一个抽象基类:
public abstract class BaseClass
{
private MyObject myObject;
protected MyObject PropA
{
get
{
if(myObject == null) this.myObject = new MyObject();
return this.myObject;
}
}
}
...在我的一个派生类中,我想将protected基类属性PropApublic。在这种情况下使用new modifier 是否正确?
public class DerivedClass : BaseClass
{
public new MyObject PropA
{
get
{
return base.PropA;
}
}
}
【问题讨论】:
-
这不是大错特错。为什么你不能在基类中公开它是很难猜到的。一个只有 BaseClass 引用的客户端程序员可能会给自己带来麻烦。
-
嗯,它在技术上是正确的,但乍一看,这似乎是一个可疑的设计。如果
PropA可以在某些派生类中公开,为什么它会受到保护?为什么不一开始就公开呢?是什么让 publicPropA在其他派生类中成为糟糕的设计?
标签: c# inheritance