请解释本规范中覆盖的目的

时间:2015-07-13 21:14:55

标签: java

这是我的先生的代码,你能解释为什么他使用了覆盖方法吗?它只有一个我复制粘贴的课程,请解释一下。

    package vehicle;

    enum carType{LUXURY,ELECTRIC,SPORTS}


    public abstract class Car implements Comparable<Car> {
        private int carId;
        private carType type;
        private float price;
        private String model;

        public Car(int carId, carType type, float price, String model) {
            this.carId = carId;
            this.type = type;
            this.price = price;
            this.model = model;
        }

        public int getCarId() {
            return carId;
        }

        public float getPrice() {
            return price;
        }

        @Override
        public String toString() {
            return "Car{" + "carId=" + carId + ", type=" + type + ", price=" + price + ", model=" +
                    model + '}';
        }


          public boolean equals(Object obj)     
          {
              if(obj instanceof Car)
              {
                  Car c = (Car)obj;
              if(c.carId==carId)
                     return true;
              }

                     return false;
    }


        @Override
        public int compareTo(Car o) {

            if(carId>o.carId)
                 return 1;
             else if (carId<o.carId)
                 return -1;
             else 
                 return 0;
    }

    public abstract void display();

1 个答案:

答案 0 :(得分:0)

我也是学生,所以我的解释可能不那么紧,但我想:

这部分被重写,因为有一个BUILT-IN ToString()方法,所以通过使用@Override,他告诉程序当调用toString()时,他应该使用你创建的那个。

 @Override
        public String toString() {
            return "Car{" + "carId=" + carId + ", type=" + type + ", price=" + price + ", model=" +
                    model + '}';
        }

这里我们覆盖了BUILT-IN方法中也提供的EQUALS方法,因此当你与对象进行比较时,程序会知道使用THAT PARTICULAR方法(你所写的方法)。

public boolean equals(Object obj)     
          {
              if(obj instanceof Car)
              {

              Car c = (Car)obj;
          if(c.carId==carId)
                 return true;
          }

                 return false;
}

同样的原因

        @Override
        public int compareTo(Car o) {

            if(carId>o.carId)
                 return 1;
             else if (carId<o.carId)
                 return -1;
             else 
                 return 0;
    }