当前位置: 首页 > 编程语言 > C#

类有没有办法“删除”它继承的方法?分享

时间:2023-04-10 17:15:41 C#

有没有办法让一个类“移除”它继承的一个方法?有没有办法让类“删除”它继承的方法?例如,如果我不希望我的类有ToString()方法,我是否可以做一些事情以使其不再可用?不-这会违反Liskov的替代原则。您应该始终能够像使用超类型的实例一样使用子类型的实例。不要忘记调用者可能只知道您的类型“作为”原始类型或接口。考虑以下代码:objectfoo=newTypeWithToStringRemoved();foo.ToString();那必须编译,不是吗?那么你期望执行时会发生什么?现在对于ToString、GetHashCode、Equals和GetType,没有办法首先避免使用它们——但通常如果有一些方法要从基类型中“删除”,这表明您不应该继承它。第一。就个人而言,我发现继承在面向对象编程中的作用有点过分:它在有用的地方非常有用,但通常我更喜欢组合而不是继承,将接口作为抽象而不是基类。您可以抛出NotSupportedException,将其标记为过时并使用EditorBrowsable:[EditorBrowsable(EditorBrowsableState.Never)][Obsolete("...",false)]voidYourMethod(){编辑:正如其他人所指出的:我描述了一种“禁用”方法的方法,但你必须仔细考虑在哪里使用它。尤其是抛出异常可能是一件非常危险的事情。正如其他人所指出的,您不能“删除”一个方法,但是如果您觉得它以某种方式对您造成了伤害,您可以将它隐藏在派生类中。来自Microsoft的文档(现已停用):classBase{publicstaticvoidF(){}}classDerived:Base{newprivatestaticvoidF(){}//仅在Derived中隐藏Base.F}classMoreDerived:Derived{static无效G(){F();}//InvokesBase.F}简而言之,不,因为所有来自和对象继承的类都有这个方法。以上就是C#学习教程:一个类有没有办法“删除”它继承的方法?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: