私はC#のこの「機能」に出くわしました-インターフェイスメソッドを実装する基本クラスはそれから派生する必要はありません。
例:
public interface IContract
{
void Func();
}
// Note that Base does **not** derive from IContract
public abstract class Base
{
public void Func()
{
Console.WriteLine("Base.Func");
}
}
// Note that Derived does *not* provide implementation for IContract
public class Derived : Base, IContract
{
}
何が起こるかというと、Derived
魔法のようにパブリックメソッドをピックアップし、Base.Func
それを実装することを決定しますIContract.Func
。
この魔法の背後にある理由は何ですか?
IMHO:この「準実装」機能は非常に直感的ではなく、コードの検査をはるかに困難にします。どう思いますか?