如何从子类隐藏父属性

San*_*osh 1 c# oop inheritance

如何隐藏子类中的父类属性.

父类有一个名为"Parent"的属性,我不想在子类中使用它.我该如何删除或隐藏它.

jas*_*son 11

所以听起来你问的是以下内容.你有

class Parent {
    public SomeType ParentProperty { get; set; }
}

class Child : Parent { }
Run Code Online (Sandbox Code Playgroud)

并且你想隐藏SomeProperty在实例中可见Child.

不要这样做!不要隐藏可见的基类属性.首先,它很容易解决:

Parent p = new Child();
p.ParentProperty; // oops!
Run Code Online (Sandbox Code Playgroud)

其次,这是对Liskov替代原则严重违反.基本上,原则说任何你知道的关于所有实例的事情都Parent应该对所有实例都是正确的Child.在这里,我们知道所有Parent具有可见属性的实例都称为ParentProperty类型SomeType.因此,同样应该(道德应该)适用于所有的实例Child.

你能告诉我们你为什么要这样做,也许我们可以建议一个替代方案吗?