创建一个汽车类(Car)
1、为其定义两个属性:颜色和型号。每个属性都使用private进行封装,都设置set、get方法。
2、为该类创建两个构造方法。第一个为无参的构造方法。第二个为有参的构造方法
3、重写toString方法,通过toString输出汽车信息。
4、重写equals方法,如果汽车的颜色和型号相同就认为是同一辆车。
5、实例化两个对象,输出两个对象的信息,比较两个对象是否是同一个对象。
public class Car {
private String color;
private String model;
// 无参构造方法
public Car() {
}
// 带参构造方法
public Car(String color, String model) {
this.color = color;
this.model = model;
}
// 颜色属性的set方法
public void setColor(String color) {
this.color = color;
}
// 颜色属性的get方法
public String getColor() {
return color;
}
// 型号属性的set方法
public void setModel(String model) {
this.model = model;
}
// 型号属性的get方法
public String getModel() {
return model;
}
// 重写toString方法
@Override
public String toString() {
return "Car{" +
"color='" + color + '\'' +
", model='" + model + '\'' +
'}';
}
// 重写equals方法
@Override
public boolean equals(Object obj) {
if (this == obj) { //这一行代码首先检查两个对象的引用是否相同。使用==运算符比较两个对象的引用,
return true; // 如果它们指向同一个内存地址,则表示这两个对象是相同的,直接返回true。
}
if (obj == null || getClass() != obj.getClass()) { //这一行代码首先检查参数obj是否为null,如果是null则表示与当前对象不相等,直接返回false。
return false; //接着,我们使用getClass()方法获取当前对象的类对象(Class对象),并与参数obj的类对象进行比较。如果两个对象的类不相同,说明它们不属于同一个类,直接返回false。
}
Car other = (Car) obj; //这一段代码将参数obj强制转换为Car类型,并将其赋值给变量other。
return color.equals(other.color) && model.equals(other.model); //然后,通过调用equals()方法来比较两个对象的颜色和型号属性是否相等。equals()方法是String类的方法,用于比较字符串是否相等。
} //如果颜色和型号都相等,返回true,表示两个对象相等;否则返回false,表示两个对象不相等。
//总结来说,重写equals代码块比较两个Car对象是否相等的逻辑为:首先检查引用是否相同,然后检查类是否相同,最后比较对象的属性是否相等。
public static void main(String[] args) {
// 实例化两个Car对象
Car car1 = new Car("红色", "奔驰");
Car car2 = new Car("红色", "奔驰");
// 输出两个对象的信息
System.out.println(car1);
System.out.println(car2);
// 比较两个对象是否相同
System.out.println("两个对象是否相同:" + car1.equals(car2));
}
}