Java中对象的声明与赋值

Java中对象的声明与赋值,java,variable-assignment,variable-declaration,Java,Variable Assignment,Variable Declaration,其中有多少是正确的? 我很困惑,如果第二个可以驾驶=。。。 第四个对象x=。。是正确的车x=新车();错误,车辆[]x=新车();这是错误的 Car x = new Vehicle(); 第二条语句很好——声明一个指向接口的具体实现的iterface没有问题。最佳实践(抽象和隐藏实现) 第三条语句是非法的-您不能声明引用基类的具体实现。为什么?您将缺少声明类型的预期行为 第四条语句很好,与第二条语句类似,只是使用了基类实现类而不是接口 第五条陈述是错误的,但很容易纠正: 车辆[]x={new

其中有多少是正确的? 我很困惑,如果第二个可以驾驶=。。。 第四个对象x=。。是正确的

车x=新车();错误,车辆[]x=新车();这是错误的

Car x = new Vehicle();
第二条语句很好——声明一个指向接口的具体实现的iterface没有问题。最佳实践(抽象和隐藏实现)

第三条语句是非法的-您不能声明引用基类的具体实现。为什么?您将缺少声明类型的预期行为

第四条语句很好,与第二条语句类似,只是使用了基类实现类而不是接口

第五条陈述是错误的,但很容易纠正:
车辆[]x={new Vehicle()}

您所有的课程都属于“可驾驶”类型

“Vechile”是“Drivable”类型,“Car”是“Vehicle”类型,因此“Car”是“Vehicle”

“汽车”和“车辆”都是“可驾驶的”

除了“Car x=new Vehicle();”和数组初始化(如下所示)之外,所有初始化都是正确的

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();

这是错误的,因为每辆车都是车辆,而不是相反,即每辆车都可能不是车辆。继承是“类型”,即汽车是车辆类型

Vehicle[] x = new Vehicle[] { 
    //Vehicles go here
};
这里的x是数组类型,因此初始化是错误的

Car x = new Vehicle();
应该是

Vehicle[] x = new Vehicle();

你为什么不尝试一下呢,也就是说,自己做一点研究呢?快速搜索一下遗产就会回答你的问题。