少しあいまいな質問ですが、おそらく宿題をやっていると思います。
まず、仮想メソッドを使用すると、すべてのサブクラスが継承するデフォルトの動作を記述できますが、独自のものに置き換えるオプションがあります。
基本的に、共通のインターフェイスに類似した共通の動作があるかどうかを自問する必要があります。
音楽プレーヤーを考えてみてください。インターフェイスとは何ですか?停止、早送り、巻き戻し、再生を行いましょう。
これはインターフェースの良い例です。すべてのデフォルトの「動作」は、メソッドの名前によって記述されます。
CD プレーヤーの「再生」方法は、MP3 プレーヤーの「再生」方法とはまったく異なります。上記は抽象メソッドの例です。
これが必要な動作のすべてである場合、抽象クラスは必要なく、インターフェースが必要です。
ただし、ここで最初まで巻き戻して再生するボタンを考えてみましょう。これは仮想メソッドの良い例であり、それを実装するには抽象クラスが必要です。すでに記述した抽象メソッドに基づいてデフォルトの実装を提供できます。トラック;))。さらに、サブクラスには、必要に応じて動作を上書きする機能があります。
あなたの質問への答え:
質問 1: いいえと思います。デフォルトの実装がないため、Move は抽象的である必要があります (デフォルトの暗黙の動作ですが)。
質問 2: はい。デフォルトの実装がない場合は、abstract を使用してください。ただし、クラスが完全に抽象メソッドで構成されていることがわかった場合は、代わりにインターフェイスを定義する方がよいかどうかを自問してください。