abstract(class)は抽象クラスで継承して中身を実装しないと使えないクラスのこと。 interfaceはクラスに求めらる必須条件を定義するためのテンプレートみたいなものです。 実際の違いとしては 1)abstractクラスは一つしか継承できないが、interfaceは複数実装できる 2)abstractクラスでは、共通メソッドを定義出来るが、interfaceでは中身のあるメソッドは実装できない ってところでしょうかね。 使いどころの違いとしては、interfaceは主にライブラリに渡すコールバック処理を行うようなクラスを既定するような場合(フレームワークに「マウスのボタンが押されたときに呼び出す」処理などを既定したクラスを渡すような場合とか)に使われ、abstractクラスは、継承して細分化・具体化するクラス群の共通処理(例えば、哺乳類クラスを継承して犬・猫・人クラスを造る場合