interface Drivable{}
class Vehicle implements Drivable{}
class Car extends Vehicle{}
Vehicle x= new Vehicle();
Drivable x= new Vehicle();
Car x = new Vehicle();
Object x = new Vehicle();
Vehicle[] x = new Vehicle();
其中有多少是对的? 我很困惑,如果第二个Drivable = ... 和第四个对象x = ..是对的
答案 0 :(得分:0)
Car x = new Vehicle();是错的,而Vehicle [] x = new Vehicle();是错的。
第二个语句很好 - 没有问题,声明了一个指向接口的具体实现的iterface。实际上是最佳实践(抽象和隐藏实现)。
第3个语句是非法的 - 您不能声明将引用基类的具体实现。为什么?你会错过声明类型的预期行为....
第4个语句很好,类似于第2个语句,只使用基类实现类而不是接口。
第五种说法错误但容易修复: Vehicle [] x = {new Vehicle()};
答案 1 :(得分:0)
您的所有课程类型均为“可驾驶”
“Vechile”的类型为“Drivable”,“Car”的类型为“Vehicle”,因此“Car”是“Vehicle”。
“汽车”和“汽车”都是“可驾驶的”。
除了“Car x = new Vehicle();”之外,所有初始化都是正确的。和数组初始化,应该看起来像这样
vector[1]
答案 2 :(得分:0)
这是错误的,因为每辆车都是车辆而不是其他方式,即每辆车都不是汽车。继承是“类型”,即汽车是车辆的类型。
Car x = new Vehicle();
这里的x是数组类型,所以初始化是错误的。
Vehicle[] x = new Vehicle();
应该是
Vehicle[] x = new Vehicle[size];