Java中Truck,Car都是Vehicle的子类,尝试将新的 Truck 对象放入 Car []数组将导致编译器错 误,因为 Truck 不符合 Car 类型。请通过更改数组类型为 Vehicle []类型来实现该操作
时间: 2024-02-25 14:57:39 浏览: 54
是的,您说得对。由于Truck和Car都是Vehicle的子类,因此Truck对象可以被视为Vehicle对象。但是Car[]数组的类型为Car,因此只能容纳Car对象,而无法容纳Truck对象。因此,您需要将数组类型更改为Vehicle[]类型,以便可以将Truck对象放入该数组中。这是因为Vehicle[]类型可以容纳Vehicle及其所有子类的对象。您可以按照以下方式进行更改:
```java
Vehicle[] vehicles = new Vehicle[2];
vehicles[0] = new Car();
vehicles[1] = new Truck();
```
在这个例子中,我们创建了一个Vehicle类型的数组,并将其长度设置为2。然后,我们将Car对象和Truck对象分别赋值给该数组的第一个和第二个元素。这样就可以成功将Truck对象放入Vehicle数组中了。
相关问题
Vehicle Car Sports car Airplane Amphibious vehicle Engine Jet engine Electric motor Wheel Transmission Truck Bicycle 将以上类组织成类的继承层次结构。
我们可以基于车辆的不同属性和功能将其组织成如下的类层次结构:
```plaintext
Vehicle (父类)
├── RoadVehicle (子类)
│ ├── Car (孙子类)
│ │ └── SportsCar (曾孙类)
│ ├── Truck (孙子类)
│ └── Bicycle (曾孙类)
├── AirborneVehicle (子类)
│ ├── Airplane (孙子类)
└── SpecializedVehicles (抽象子类)
├── AmphibiousVehicle (曾孙类)
├── Engine (曾孙类) // 抽象表示动力源,非交通工具
├── JetEngine (子类) // 具体动力源之一
└── ElectricMotor (子类) // 另一具体动力源
其中:
- Vehicle 是所有交通工具的顶级抽象类,包含通用的特征如尺寸、重量等。
- RoadVehicle 指代能在道路上行驶的车辆,如汽车和卡车。
- AirborneVehicle 表示能够在空中飞行的交通工具,如飞机。
- SpecializedVehicles 是一些特殊的交通工具类型,如船陆两栖车和发动机(虽然这里将Engine视为单独的类,但在实际应用中它可能是Vehicle的一个抽象子类)。
- Car 和 SportsCar 继承自RoadVehicle,共享基本特性如座位数和驾驶室。
- Bicycle 是一种小型的RoadVehicle。
- Airplane 是独立于其他车辆类型的飞行器。
- Engine 类作为动力来源的抽象,JetEngine 和 ElectricMotor 分别代表喷气式引擎和电动机,属于SpecializedVehicles的子类。
设计一个汽车类Vehicle包含属性有车轮个数wheels和车重weight小车类Car是Vehicle子类,包含属性有载人数loader卡车类Truck是Car类子类,包含属性有载重量payload,每个类都有构造方法和输出数据的方法
在设计面向对象的程序时,我们通常会根据现实世界中的对象来定义类。在这个例子中,我们首先定义了一个基类Vehicle,它包含车轮个数和车重这两个属性。接着定义了Car类,它是Vehicle的子类,增加了载人数这一属性。最后,Truck类作为Car的子类,再增加了一个载重量的属性。每个类都有构造方法用于创建对象时初始化属性,以及一个输出数据的方法用于展示对象的信息。
下面是如何用伪代码来表示这些类的结构:
```java
// 基类Vehicle
class Vehicle {
// 属性
int wheels; // 车轮个数
double weight; // 车重
// 构造方法
public Vehicle(int wheels, double weight) {
this.wheels = wheels;
this.weight = weight;
}
// 输出数据的方法
public void displayData() {
System.out.println("车轮个数:" + this.wheels + ",车重:" + this.weight);
}
}
// Car类,继承自Vehicle
class Car extends Vehicle {
// 属性
int loader; // 载人数
// 构造方法
public Car(int wheels, double weight, int loader) {
super(wheels, weight); // 调用父类构造方法
this.loader = loader;
}
// 输出数据的方法
@Override
public void displayData() {
super.displayData(); // 调用父类的输出方法
System.out.println("载人数:" + this.loader);
}
}
// Truck类,继承自Car
class Truck extends Car {
// 属性
double payload; // 载重量
// 构造方法
public Truck(int wheels, double weight, int loader, double payload) {
super(wheels, weight, loader); // 调用父类构造方法
this.payload = payload;
}
// 输出数据的方法
@Override
public void displayData() {
super.displayData(); // 调用父类的输出方法
System.out.println("载重量:" + this.payload);
}
}
```
以上代码中,我们定义了三个类:Vehicle、Car和Truck。Car类继承了Vehicle类,Truck类继承了Car类。每个类都有一个构造方法和一个`displayData()`方法用于输出对象的属性信息。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)