防止静态成员的继承

时间:2014-08-14 12:35:55

标签: c# .net inheritance static language-design

基地:

public abstract class systemClient : IDisposable
{
    public static List<systemClient> Collection = new List<systemClient>();
    [...]
}

派生类

public class station : systemClient
{
    [...]
}

在此设置中,我可以访问station.Collection

问题是: 有隐藏的方法 station.Collection 吗?

2 个答案:

答案 0 :(得分:1)

你做不到。通过创建inhClass作为baseClass inhClass 的子类,必须提供baseClass提供的所有内容。否则baseClass x = new inhClass()将无效。

在这种特定情况下,尽管您已将方法设为静态,但这意味着它实际上没有自己的方法副本。 inhClass只是访问baseClass中的静态内容。

答案 1 :(得分:1)

我同意Tim B的回答。您不能简单地“忽略”您继承的类的某些方法或属性。但是,你可以做的是实现一个interface,它可以完成你想要的工作。如需进一步阅读,请查看here