私はOOPの過去の試験問題をいくつか見ていますが、次のコードを理解するのに助けていただければ幸いです。問題は、この最初のコードブロックと、SandwichがEdibleを実装していることを考えると、次のステートメントのどれが合法ですか?
Sandwich sub = new Sandwich();
Rectangle cerealBox = new Rectangle(20,30,20,10);
Edible e = null;
e = sub;
sub = e;
sub = (Sandwich) e;
sub = (Sandwich) cerealBox;
e = cerealBox;
e = (Edible) cerealBox;
e = (Rectangle) cerealBox;
e = (Rectangle) null;
e = (Edible) sub;
cerealBox = (Rectangle) new Object();
私の現在の理解では、サブには食用オブジェクトを構成するために必要な要素があるため、最初のステートメントは真です。したがって、2番目のステートメントでは逆に機能しません。そして、3番目のステートメントでは、キャストによってこれが機能します。しかし、cerealBoxはSandwichに適用されないため、4番目はそうではありません。その後、最後の2つはキャストのために機能します。しかし、どうやら6番目のものは機能しますか?
私が知っていることについての私のひどい説明について申し訳ありませんが、どんな助けもいただければ幸いです。