我正在查看一些过去的 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();
我目前的理解是,第一个语句是正确的,因为 sub 具有构成可食用对象所需的元素,因此它不适用于第二个语句。并且使用第三个语句强制转换确实允许它工作。但第四个不是因为谷物盒不适用于三明治。然后由于演员阵容,最后两个确实有效。但显然第六个有效?
很抱歉我对我所知道的事情的糟糕解释,任何帮助将不胜感激。