「インターフェースへのコード」は良い習慣と考えられています。このようなコードは単体テストが容易で、疎結合が可能です。ユーザーはインターフェイスだけを知っており、具体的なオブジェクトを配線する責任は最上位レベルにあります (これは、いくつかの初期化コードで、またはフレームワークの助けを借りて行うことができます)。
私の質問は、インターフェースへのコードの実践に従うことについてです:具象クラスは、そのインターフェースに存在しないパブリックメソッドを決して宣言できないことを意味しますか?
そうしないと、ユーザーは具体的な実装に依存することになります。これにより、そのようなメソッドの単体テストが難しくなります。テストが失敗した場合、呼び出し元コードの問題が原因で失敗したのか、具体的なメソッドが原因で失敗したのかを判断するには、余分な労力が必要です。これは、依存関係逆転の原則にも違反します。これは、悪い習慣と見なされる型チェックとダウンキャストを引き起こします。