複製:
おそらく最も有名なソフトウェア開発者の就職の面接の質問の1つです。
あなたの答えは何ですか?
編集:私はあなたが実際の状況でこれにどのように答えるかを見つけようとしています。実際の就職の面接と同じように答えを定式化してみてください(完全に記入してください。ただし、長すぎないでください。もちろんリンクは投稿しないでください)。
おそらく最も有名なソフトウェア開発者の就職の面接の質問の1つです。
あなたの答えは何ですか?
編集:私はあなたが実際の状況でこれにどのように答えるかを見つけようとしています。実際の就職の面接と同じように答えを定式化してみてください(完全に記入してください。ただし、長すぎないでください。もちろんリンクは投稿しないでください)。
インターフェイスは、そのメソッドなどの実際の署名のみを記述します。そのインターフェイスを実装するクラスは、明示的な実装を提供する必要があります。
抽象クラスには、そのメソッドの部分的な実装などを含めることができます。
抽象クラスはメンバー変数を持つことができますが、インターフェイスは持つことができません(または、C ++ではそうすべきではありません)。
Javaでは、「インターフェイス」は明確に定義された構文要素ですが、C++では単なるデザインパターンです。
インターフェイスは、クラスによって実装する必要があるメソッドの定義を提供します。インターフェイスの目的は、実装に関係なく特定の機能を一般化できるようにすることです。/メソッドIDatabase
を持つインターフェースがあるかもしれません。そのインターフェイスを実装するクラスは、MySQL データベースまたは MS Access データベースに接続している可能性があります。このタスクをどのように達成するかに関係なく、目標は同じです...データベースを開き、データベースを閉じます。Open
Close
抽象クラスは、いくつかの抽象メソッドを含む基本クラスです。派生元のインスタンスを作成することはできません。Abstract クラスの目的は、一般的な機能とサブクラスを定義して、必要に応じてより具体的な機能を実装できるようにすることです。
要約すると、各クラスの実装が完全に異なる場合は、インターフェイスを使用する必要があります。似たような動作がいくつかあるが、部分を別の方法で実装する必要がある場合は、抽象クラスを使用します。
それが役立つことを願っています。
違いは言語に依存すると思いますが、少なくともC ++では、抽象クラスがインターフェースを実装する手段です。
就職の面接に関しては、インターフェースが契約であることが重要なポイントだといつも聞いています。インターフェイスは、それ自体を実装していませんが、機能を保証します。