自定义一个类Apple,实例化出A1 A2 …A5不同重量的5个苹果,如果按照两个苹果的重量相同则判断为相等的话,请重写出equals方法、toString方法及hashCode方法。
时间: 2024-03-24 11:36:26 浏览: 101
好的,我来为您演示一下如何实现这个类:
```java
public class Apple {
private double weight;
public Apple(double weight) {
this.weight = weight;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Apple apple = (Apple) obj;
return Double.compare(apple.weight, weight) == 0;
}
@Override
public int hashCode() {
return Objects.hash(weight);
}
@Override
public String toString() {
return "Apple{" +
"weight=" + weight +
'}';
}
}
```
在这个类中,我们定义了一个私有属性 `weight` 表示苹果的重量,以及一个构造方法 `Apple(double weight)` 用于初始化这个属性。同时,我们还提供了相应的 setter 和 getter 方法。
为了让两个苹果的重量相等时被判断为相等,我们需要重写 `equals` 方法。在这个方法中,我们首先判断两个对象是否为同一个对象,如果是则直接返回 `true`。接着,我们判断传入的对象是否为 `Apple` 类型,如果不是则返回 `false`。最后,我们比较两个苹果的重量是否相等,如果相等则返回 `true`,否则返回 `false`。
为了保证重载的 `equals` 方法可以正常工作,我们还需要重写 `hashCode` 方法。在这个方法中,我们使用 `Objects.hash` 方法根据苹果的重量计算出一个哈希值。
最后,我们还重写了 `toString` 方法,用于打印出苹果的重量。
现在,我们可以根据这个类来创建 5 个不同重量的苹果:
```java
Apple a1 = new Apple(0.5);
Apple a2 = new Apple(0.5);
Apple a3 = new Apple(0.8);
Apple a4 = new Apple(0.3);
Apple a5 = new Apple(1.0);
```
如果我们想判断两个苹果是否相同,只需要使用 `equals` 方法即可:
```java
System.out.println(a1.equals(a2)); // true
System.out.println(a1.equals(a3)); // false
```
如果我们想打印出一个苹果的信息,可以使用 `toString` 方法:
```java
System.out.println(a1.toString()); // Apple{weight=0.5}
```