私の経験から、次のことが正しいと思います。重要な点が欠けている場合はお知らせください。
インターフェース:
インターフェイスで宣言されたすべてのメソッドは、サブクラスで実装する必要があります。インターフェイスに存在できるのは、イベント、デリゲート、プロパティ (C#)、およびメソッドのみです。クラスは複数のインターフェイスを実装できます。
抽象クラス:
サブクラスで実装する必要があるのは抽象メソッドのみです。Abstract クラスは、実装を伴う通常のメソッドを持つことができます。抽象クラスは、イベント、デリゲート、プロパティ、およびメソッドの横にクラス変数を持つこともできます。C# には複数継承が存在しないため、クラスは 1 つの抽象クラスのみを実装できます。
その違いでさえ質問を説明しません
1) 抽象メソッドだけを持つ抽象クラスがあるとしたら? それはインターフェースとどのように違うでしょうか?
2) インターフェイス内にパブリック変数があるとしたら、それは抽象クラスとどのように異なるでしょうか?
したがって、説明はさまざまです。