用Java和toString方法创建一个基类



我是Java的新手,为了更好地理解,我完成了一些编码任务。在这个特定的例子中,我正在制作一个Car类,以便它符合以下UML:

-make: String
-year: int
-speed: double
+Car(m:String,y:int)
+toString(): String
+getMake(): String
+getSpeed(): double
+getYear(): int
+accelerate(): void
+brake(): void

首先,我在类中创建三个实例变量:一个保存汽车年款的int,一个保存车辆品牌的String,一个保持汽车速度的double。这些应该列为私有。

接下来,我将创建一个构造函数,该构造函数接受模型年份并生成并将速度设置为0。请注意,构造函数的参数应该是与实例变量不同的名称,或者使用";这个";将参数的值放入实例变量时使用的限定符。

到目前为止,这是我按照给定说明编写的代码:

public class Car
{
private int year;
private String make;
private double speed;
public Car(String make, int year) {
this.make = make;
this.year = year;
speed = 0;
public String toString(){

所以我的第一个问题是——我如何使用";这个";关键字?我应该在构造函数下执行speed=0吗?

我的下一个问题是关于以下指示:;对toString方法进行编码。此方法不应包含任何参数,并且应返回使用string.format方法生成的字符串:

字符串格式("正在以%.1f英里/小时运行的%d%s",年份,品牌,速度(

现在,编译你的汽车类并更正任何错误

因此,我已经对toString格式和String.format进行了研究,但不确定将其放在代码中的何处。它会只是公共静态void main(String[]args(后面的一行吗?

所以我的第一个问题是——如何使用";这个";关键字?我应该这么做吗?year=0?

是。

在java中,每个Object都有toString()方法。如果您不覆盖它,它将为您提供类名和哈希代码。要覆盖方法,您需要在方法之前添加@override。最终结果应该是这样的:

public class Car {
private int year;
private String make;
private double speed;
public Car(int year, String make) {
this.year = year;
this.make = make;
this.speed = 0;
}
@Override
public String toString() {
return String.format("A %d %s that is going %.1f mph", year, make, speed);
}
}

如何使用;这个";关键字?我应该这么做吗?year=0?

是的,因为构造函数不接受任何参数来设置速度,所以这样做是有意义的:

this.speed = 0 // or speed = 0 since there is no conflict in name with the incoming parameters

因此,Car类的构造函数看起来应该是:(我更喜欢使用this关键字,因为它可以帮助我保持一致,并在看到实例变量时知道我正在处理它。(

public Car(int year, String make) {
this.year = year;
this.make = make;
this.speed = 0;
}

java中的每个类都有一个to to String方法的默认实现。

toString((的默认行为是打印类名,然后是@,然后是对象哈希代码的无符号十六进制表示。

如果你想要不同的行为,你可以覆盖方法:

@Override
public String toString() {
return String.format("A %d %s that is going %.1f mph", year, make, speed);
}

这将包含在Car类中。

相关内容

最新更新