继承类扩展

时间:2020-02-09 10:18:57

标签: class inheritance

福特类扩展了汽车类。以下哪个表达式是合法的?

Car x = new Car();
Ford y = new Ford();
x = y;
y = x;
y = new Car();
x = new Ford();

1 个答案:

答案 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不是福特汽车。

希望有帮助