初学者ですが、個人的な勉強のため書きました
##アップキャスト
・サブクラスのインスタンスをスーパークラスのオブジェクトに格納することをアップキャストという
・コンパイラは互換性をチェックできればキャストを自動的に行ってくれるので、継承関係であるサブクラスはスーパークラスのすべてのメンバーを保証できるためアップキャストは暗黙的に行われる
・スーパークラスとサブクラスに、同じ名前のフィールド変数やメソッドがある場合には、フィールド変数はスーパークラス、メソッドはサブクラスが優先される
##ダウンキャスト
・アップキャストとは逆に、サブクラスのオブジェクトにスーパークラスのオブジェクトを格納することをダウンキャストという
・スーパークラスはサブクラスのすべてのメンバーを保証できないため、スーパークラスからサブクラスにダウンキャストする場合は明示的にダウンキャストを行う必要がある
・アップキャストされていないオブジェクトをダウンキャストすると、ClassCastExceptionの例外が発生するので、一度アップキャストしてからダウンキャストする必要がある
・instanceof演算子でオブジェクトが指定したクラス型もしくは指定したクラスを継承しているか比較することでダウンキャストできるか判定できる