福特类扩展了汽车类。以下哪个表达式是合法的?
Car x = new Car();
Ford y = new Ford();
x = y;
y = x;
y = new Car();
x = new Ford();
答案 0 :(得分:2)
这些代码行不合法:
y = x;
y = new Car();
那它如何工作?
当您声明类型为Car
的变量时,该变量可以是任何汽车(例如福特或法拉利)。
但是,当您声明类型为Ford
的变量时,该变量可以是任何Ford car
,例如福特野马汽车。但这绝对不可能是法拉利。
这也是合法的:
Car a = new Ford();
Ford b = (Ford) a;
因为a
是Car,但由于它也是福特,因此可以转换为福特。
当然,这是不合法的:
Car c = new Ferrari();
Ford d = (Ford) c;
此代码可以编译。但是您会遇到ClassCastException,因为c
不是福特汽车。
希望有帮助