设计一个名为“Vehicle”的抽象类,它有成员:
字符串颜色,双倍速度,字符串昵称
和抽象方法:
public abstract double getNumberOfWheels();
设计具体类“Sedan”,“Motorcycle”和“Truck”作为“Vehicle”的子类 创建轿车,摩托车和卡车的对象,并输出以下信息* 车辆的类型 车辆的颜色 车辆的昵称
按顺序排列 速度 颜色 车轮数量
例如,如果您创建:
(1)轿车对象:昵称“风”颜色“白色”速度100
(2)摩托车对象:昵称“闪光”颜色“黑色”速度120
(3)卡车对象:昵称“奶奶”颜色“黄色”速度88
我对如何编写悔罪类感到困惑。我究竟如何执行这些类的输出?
这是我的完整车辆类:
public abstract class Vehicle {
String color;
double speed;
String nickname;
public Vehicle(String color, double speed, String nickname)
{
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getSpeed() {
return speed;
}
public void setSpeed(double speed) {
this.speed = speed;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public abstract double getNumberOfWheels();
}
这是轿车:
public class Sedan extends Vehicle {
public Sedan(String color, double speed, String nickname) {
super(color, speed, nickname);
}
我是否必须为类型创建另一个字符串?如何让它返回那些输出?我对输出感到有些困惑。
答案 0 :(得分:1)
首先,您需要更改车辆类以定义正确的构造函数:
public abstract class Vehicle {
String color;
double speed;
String nickname;
public Vehicle(String color, double speed, String nickname)
{
this.color = color;
this.speed = speed;
this.nickname = nickname;
}
.....
}
现在您可以将具体类定义为:
public class Sedan extends Vehicle {
private double numOfWheels = 4.0;
public double getNumberOfWheels()
{
return numOfWheels;
}
public Sedan(String color, double speed, String nickname) {
super(color, speed, nickname);
}
public Sedan(String color, double speed, String nickname, double numOfWheels) {
this.numOfWheels = numOfWheels;
super(color, speed, nickname);
}
public String toString() {
StringBuffer buff = new StringBuffer();
return buff.append("Nickname = ").append(nickname).append(" color = ").append(color)
.append(" speed = ").append(speed).append(" Num of Wheels = ")
.append(numOfWheels).toString();
}
}
现在测试代码:
public class TestVehicle {
public static void main(String[] args) {
Sedan vehicle1 = new Sedan("red", 120.0, "XUV");
Sedan vehicle2 = new Sedan("white", 160.0, "Safari", 6.0);
System.out.println(vehicle1); // This will call toString method of Sedan class.
System.out.println(vehicle2); // This will call toString method of Sedan class.
}
}
答案 1 :(得分:0)
您可以使用基本抽象类的方法获得的属性值 - 它们都可用于每个子类。你还需要实现
public double getNumberOfWheels()
{
// TODO: implementation of subclass
}
扩展Vehicle类的每个子类的方法。 请看下面的链接,我认为这会有所帮助: http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html
答案 2 :(得分:0)
你的Sedan类继承了已经实现的所有Vehicle方法(在本例中没有抽象方法),getNumberOfWheels();除外。您的Vehicle类希望您在Sedan类中编写getNumberOfWheels()方法。然后你可以制作一个Sedan对象!
以下是您可以接收输出的示例。
public Sedan(String color, double speed, String nickname) {
super(color, speed, nickname);
public double getNumberOfWheels(){
return 4;
}
public static void main(String[] args){
Sedan BMW = new Sedan("Black",34,"idk");
System.out.println(BMW.getNumberOfWheels());
System.out.println(BMW.getSpeed());
}
}
答案 3 :(得分:0)
如果声明一个抽象方法,这意味着你需要在子类中提供它的详细信息。
public class Sedan extends Vehicle {
double numOfWheels = 4.0;
public double getNumberOfWheels()
{
return numOfWheels;
}
public Sedan(String color, double speed, String nickname) {
super(color, speed, nickname);
}
}
要使用这些对象,需要main()来创建和使用这些对象。
public class UseVehicle {
public static void main(String[] args) {
Sedan car1 = new Sedan("white", 100, "wind");
System.out.printf("car1: (%s, %d, %s) \n",
car1.getColor(), car1.getSpeed(), car1.getNickname());
}
}