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