【发布时间】:2023-04-04 00:05:01
【问题描述】:
我想做这样的事情:
public class MyClass {
public virtual void Foo() {
this.DoSomethingThatWouldBeFineInASubclassButAnOverrideWouldNotWantToUse();
}
}
基本上,我在这里做一些工作,我想要一种默认的方式来做这件事,但是如果有人要覆盖,他们可能不应该使用默认值。无需考虑就将 base.Foo() 放入覆盖中是如此容易;事实上,我的 IDE 会自动执行此操作。我想阻止这种情况。有可能吗?
【问题讨论】:
-
您可以使用
new-关键字来隐藏基本实现。 -
如果您将
DoSomethingThatWouldBeFineInASubclassButAnOverrideWouldNotWantToUse设为私有会怎样?那么只能从MyClass调用 -
@NedStoyanov 但是你仍然可以打电话给
base.Foo()。 -
啊哈,我的错。恕我直言,我认为这是不可能的。拥有
Foovirtual 使其对子类可见,因此他们可以覆盖它。如果他们可以覆盖它,他们就可以调用它。 -
我有问题,我用继承“解决”它;我现在遇到的问题呈指数级增长......
标签: c# overriding subclassing virtual-functions