●ダウンキャスト ダウンキャストとは、スーパークラス型の変数に代入したサブクラスのオブジェクトを元のサブクラス型に戻すときに、(サブクラス)と型指定すること。 スーパークラス型の変数に代入したサブクラスのオブジェクトは、自分の型情報を削除され、スーパークラス型の型情報に強制的に変更させられるため、 元のサブクラス型情報をキャストという形式で与えないと、復元できないという理屈です。 Java1.5(現在使用している環境)ではジェネリック機能というものが利用できるように変更されたので、ダウンキャストの必要性は特にありません。 Java1.4まではダウンキャストの記述が必要とされます。 ●インターフェース インターフェースは、同じような機能を持つクラス部品に同名のメソッドと定数を共通で持たせるために定義されるものです。 ●ArrayList、Iterator ArrayListは伸びる配列の内部に属性として持ったクラス、Iteratorは内部にfor文で配列内を繰り返し移動する文が格納されたものとしてイメージしてください。 IteratorのhasNext()メソッドは配列内に要素がなくなるとfalse(偽)を返し、next()メソッドは次の配列要素のオブジェクトを返してきます。 詳しくは、デザインパターンのIteratorパターンを参照してください。 ●import 以下のように、パッケージ名の異なるクラスを利用するときにclass宣言の上に記載します。import=輸入する package a; public class AA{ } package b; import a.AA;//他のパッケージのクラスを利用 public class BB{ AA  } ●System.out.println();の仕様 System.out.println();は()内にクラス型のオブジェクトを設定すると、自動的にオブジェクト.toString()メソッドを呼び出す仕様になっています。 java APIのprintln()を参照のこと。 また、ArrayListクラスのtoString()メソッドは格納された要素を、[オブジェクト1.toString()、オブジェクト2.toString()、オブジェクト3.toString()、…]と いう文字列に変換し返すよう処理が記述されています。 ●継承、依存、汎化、委譲、集約の違い 継承と汎化は同じで、BクラスはAクラスの一種であると言える関係にある場合、Aクラスがスーパークラス、Bクラスがサブクラスとなります。 集約は依存の一種です。Cクラス内でDクラスを利用している場合、一般的にCクラスはDクラスを依存していると言います。 限定的に使い分ける場合、集約はDクラスはCクラスの一部であると言える場合、メンバー変数として記述され、集約と呼ばれます。またCクラスの一部のメソッド内でDクラスを利用する場合、依存と呼びます。 委譲は集約、依存ともに他クラスのメソッドに依頼している場合はともに委譲と呼びます。 ●その他の質問は疑問内容は一般的すぎて、今回答えことができませんでした。 以上です。よろしくお願いします。