初心者で申し訳ないのですが質問させてください。
ArrayList を使用する時、

List list = new ArrayList();

とすることが多いですが、

ArrayList list = new ArrayList();

としない理由はなぜでしょうか。
List の呼び出し側が List の実装クラスを気にする必要がないようにしたり(抽象化プログラミング)
実装クラスの選択肢を多くしたりするためなのでしょうか