using System;
public interface MustImplement
{
public void DoSomething();
}
public class Base
{
public void DoSomething()
{
Console.WriteLine("Something must be done");
}
}
public class Child: Base, MustImplement
{
//I don't have to implement the MustImplement interface here since the base class did it.
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,子类仅使用DoSomething()基类中的实现,并且编译器将其视为有效。
我看到有人在他们的代码中做了类似的事情,这就是为什么我创建一个代码片段只是为了传达这个想法。
有什么理由我们应该这样做而不是在基类中执行public class Base: MustImplement和实现?public virtual void DoSomething()
这有时也被称为准实现,我认为它没有太多有用的地方。我能想到的一件事是,由于某种原因,需要有不同的继承者,其中一些继承者不应实现IMustImplement(尽管您仍然可以使用显式接口实现“重新抽象” void MustImplement.DoSomething() => base.DoSomething();,或隐藏一个 - public new void DoSomething() => base.DoSomething();)。
或者Base类来自某个包并且public class Base : IMustImplement无法完成。
请注意,找到这样的准实现可能有点令人头疼,不确定所有 IDE 是否完全支持它们,因此如果可能的话,并且没有实际需要将继承者限制/拆分为实现接口的继承者,而不是实现接口的继承者 -将其移至基类,我认为这将使代码更具可读性和直观性。
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |