有程序定义如下,请回答问题。 class FemaleDriver extends Driver { public void drives(Vehicle v) { System.out.println("A Female driver drives " + v.getName()); } } class MaleDriver extends Driver { public void drives(Vehicle v ) { System.out.println("A male driver drives " + v.getName()); } } public class Sy12_3 { static public void main(String [ ] args){ Vehicle v = new Car(); Driver a = new FemaleDriver(); a.drives(v); //语句1 v = new Truck(); a = new MaleDriver( ); a.drives(v); //语句2 } } ① 定义抽象类Driver,包含抽象方法void drives(Vehicle v); ② 定义抽象类Vehicle,包含抽象方法String getName(); ③ 定义子类Car和Truck,重写getName()方法,分别返回字符串“car”和“truck”。把程序补充完整
时间: 2024-01-26 17:05:06 浏览: 23
根据题目中给定的代码和要求,可以将程序补充完整,如下:
```
abstract class Driver {
public abstract void drives(Vehicle v);
}
abstract class Vehicle {
public abstract String getName();
}
class Car extends Vehicle {
public String getName() {
return "car";
}
}
class Truck extends Vehicle {
public String getName() {
return "truck";
}
}
class FemaleDriver extends Driver {
public void drives(Vehicle v) {
System.out.println("A Female driver drives " + v.getName());
}
}
class MaleDriver extends Driver {
public void drives(Vehicle v ) {
System.out.println("A male driver drives " + v.getName());
}
}
public class Sy12_3 {
static public void main(String [ ] args){
Vehicle v = new Car();
Driver a = new FemaleDriver();
a.drives(v); //语句1
v = new Truck();
a = new MaleDriver( );
a.drives(v); //语句2
}
}
```
注意,要将抽象类Driver和Vehicle以及它们的抽象方法定义在程序的开头,然后在后面定义它们的子类和实现。在main方法中,先创建一个Car对象,然后将它赋值给v变量,再创建一个FemaleDriver对象,将它赋值给a变量,调用a的drives方法输出"A Female driver drives car"。接着,创建一个Truck对象,将它赋值给v变量,再创建一个MaleDriver对象,将它赋值给a变量,调用a的drives方法输出"A male driver drives truck"。