29
インターフェイスと抽象クラスの違いをどのように説明すればよいですか?
インタビューの1つで、インターフェイスと抽象クラスの違いを説明するように求められました。 これが私の返答です: Javaインターフェースのメソッドは暗黙的に抽象的であり、実装を持つことはできません。Java抽象クラスには、デフォルトの動作を実装するインスタンスメソッドを含めることができます。 Javaインターフェースで宣言された変数は、デフォルトではfinalです。抽象クラスには、非final変数が含まれる場合があります。 Javaインターフェースのメンバーはデフォルトでパブリックです。Java抽象クラスは、private、protectedなどの通常のクラスメンバーのフレーバーを持つことができます。 Javaインターフェースは、キーワード「implements」を使用して実装する必要があります。Java抽象クラスは、キーワード「extends」を使用して拡張する必要があります。 インターフェースは別のJavaインターフェースのみを拡張でき、抽象クラスは別のJavaクラスを拡張して複数のJavaインターフェースを実装できます。 Javaクラスは複数のインターフェースを実装できますが、拡張できる抽象クラスは1つだけです。 しかしインタビュアーは満足せず、この記述は「本好きの知識」を表すものだと私に言った。 実用的な例を使用して、インターフェイスより抽象クラスをいつ選択するかを説明し、より実用的な対応を求められました。 どこで私は間違えましたか?