これは非常に基本的な質問であることを私は知っていますが、インタビュアーは非常に巧妙な方法で私に尋ねました、そして私は無力でした:(
私はインターフェースの物質的または理論的な定義しか知らず、私が取り組んだ多くのプロジェクトにもそれを実装しました。しかし、私はこれがなぜそしてどのように役立つのか本当に理解していません。
また、インターフェースの1つも理解していません。つまり、たとえば、
conn.Dispose();
最後にブロックします。IDisposable
しかし、クラスがinterface(SqlConnection
)クラスを実装または継承していることはわかりません。メソッド名を呼び出すにはどうすればよいのでしょうか。また、同じように、Disposeメソッドがどのように機能するかを理解していません。なぜなら、すべてのインターフェイスメソッドに対して独自の実装で関数本体を実装する必要があるからです。では、インターフェースはどのように契約として受け入れられるか、名前が付けられますか?これらの質問は今まで頭に浮かび、率直に言って、自分の質問を理解できる方法で説明する良いスレッドを見たことがありませんでした。
いつものようにMSDNは非常に怖く見え、そこには1行も明確ではありません(高レベルの開発に取り組んでいる皆さん、親切な言い訳ですが、コードや記事はそれを見る人の心に届くはずです。したがって、他の多くの人が言うように、MSDN役に立たない)。
インタビュアーは言った:
彼には5つのメソッドがあり、クラスに直接実装できますが、抽象クラスまたはインターフェイスを選択する必要がある場合は、どちらを選択しますか。その理由は何ですか。抽象クラスとインターフェースの両方の長所と短所について、さまざまなブログで読んだすべてのことを彼に答えましたが、彼は確信が持てず、一般的に「なぜインターフェース」を理解しようとしています。「なぜ抽象クラス」とは、同じメソッドを1回しか実装できず、変更できない場合でも一般的です。
ネットのどこにも、インターフェイスとその機能について明確に説明する記事を入手できませんでした。私は多くのプログラマーの1人であり、インターフェイスについてはまだ知りませんが(使用した理論と方法は知っています)、それを明確に理解していることに満足していません。