アプローチ1:基本クラスの参照を通じてサブクラスのオブジェクトを作成します。アプローチ2:同じクラスの参照を通じてサブクラスのオブジェクトを作成します。
List<Point> objOne = new ArrayList<Point>();
ArrayList<Point> objTwo = new ArrayList<Point>();
アプローチ1:基本クラスの参照を通じてサブクラスのオブジェクトを作成します。アプローチ2:同じクラスの参照を通じてサブクラスのオブジェクトを作成します。
List<Point> objOne = new ArrayList<Point>();
ArrayList<Point> objTwo = new ArrayList<Point>();
List は Interface でもあります。これはより抽象的であり、API プロパティを正確に定義しますが、それ以上ではありません。Java では実装が異なる場合があります。大量の作業には ArrayList を、メモリを節約するためには LinkedList を使用します。この実装の決定は非表示にする必要があります。
関数は、ArrayList などの特定の実装よりも List で動作する必要があります。また、ArrayList の代わりに List について話すと、より一般的に定式化されます。したがって、変数についても、その型を過剰に指定しません。
VB、PHP などの多くの (スクリプト) 言語では、この区別は存在せず、1 つの実装に 1 つの型が存在します。これは彼らの言語を簡素化し、一部の人にとっては魅力的かもしれませんが、Java には優れた技術的側面があります。
さまざまな実装で遊んだり、ファクトリ メソッドを使用して動的に選択したりできます。単体テストで実装をモックします。