如何使用Java编程创建一个抽象父类表示交通工具,然后分别实现汽车、火车和飞机的子类?接着,请编写一个上转型示例程序,以便从父类型(如Vehicle)获取每个交通工具对象并输出它们的相关乘坐信息,该如何操作?
时间: 2024-10-21 11:03:10 浏览: 21
Inheritance-Lab-Java-2:使用继承练习练习
在Java中,我们可以首先定义一个抽象父类`Vehicle`,包含一些通用的属性和方法,例如座位数、颜色等。然后为具体的交通工具(如`Car`, `Train`, `Airplane`)创建子类,并重写父类的方法以提供各自的特有信息。
```java
abstract class Vehicle {
protected String color;
protected int seats;
// 定义抽象方法,子类需要覆盖这个方法
abstract void start();
public void setColor(String color) {
this.color = color;
}
public void setSeats(int seats) {
this.seats = seats;
}
public String getColor() {
return color;
}
public int getSeats() {
return seats;
}
}
class Car extends Vehicle {
@Override
void start() {
System.out.println("汽车启动了");
}
}
class Train extends Vehicle {
@Override
void start() {
System.out.println("火车开动了");
}
}
class Airplane extends Vehicle {
@Override
void start() {
System.out.println("飞机起飞了");
}
}
```
接下来,我们可以创建一个上转型的示例程序,用于获取并处理各个交通工具对象:
```java
public class Main {
public static void main(String[] args) {
// 创建父类型的引用并赋值给子类实例
Vehicle car = new Car();
Vehicle train = new Train();
Vehicle airplane = new Airplane();
// 使用父类型的方法访问子类的特性
car.setColor("红色");
car.setSeats(5);
car.start(); // 输出 "汽车启动了"
train.setColor("蓝色");
train.setSeats(100);
train.start(); // 输出 "火车开动了"
airplane.setColor("银色");
airplane.setSeats(200);
airplane.start(); // 输出 "飞机起飞了"
}
}
```
在这个例子中,虽然我们通过父类型的引用操作的是子类的对象,但由于Java的向上转型(Upcasting),`start()`方法会执行对应的子类版本,体现了多态性的灵活性。
阅读全文