Не могу победить переопределение методов.
почему такая реализация не верна? Где нужно размещать константу? Какие модификаторы использовать? Подскажите, пожалуйста.
@Override
public int getMaxSpeed() {
final int MAX_TRUCK_SPEED = 80;
return MAX_TRUCK_SPEED;
}
package com.javarush.task.task29.task2909.car;
import java.util.Date;
public abstract class Car {
static public final int TRUCK = 0;
static public final int SEDAN = 1;
static public final int CABRIOLET = 2;
double fuel;
public double summerFuelConsumption;
public double winterFuelConsumption;
public double winterWarmingUp;
private int type;
private boolean driverAvailable;
private int numberOfPassengers;
//public Car() {
// }
public Car(int type, int numberOfPassengers) {
this.type = type;
this.numberOfPassengers = numberOfPassengers;
}
public static Car create(int type, int numberOfPassengers){
switch (type){
case TRUCK:
return new Truck (Car.TRUCK, numberOfPassengers);
case SEDAN:
return new Sedan (Car.SEDAN, numberOfPassengers);
case CABRIOLET:
return new Cabriolet (Car.CABRIOLET, numberOfPassengers);
default: return null;
}
}
private boolean canPassengersBeTransferred(){
return isDriverAvailable()&&fuel>0;
}
public void fill(double numberOfLiters) throws Exception{
if (numberOfLiters < 0){
throw new Exception();
}
fuel += numberOfLiters;
}
public double getTripConsumption(Date date, int length, Date summerStart, Date summerEnd) {
double consumption;
if (!isSummer(date,summerStart,summerEnd)) {
consumption = getWinterConsumption(length);
} else {
consumption = getSummerConsumption(length);
}
return consumption;
}
public int getNumberOfPassengersCanBeTransferred() {
if (canPassengersBeTransferred()) {
return numberOfPassengers;
}else {
return 0;}
}
public boolean isDriverAvailable() {
return driverAvailable;
}
public void setDriverAvailable(boolean driverAvailable) {
this.driverAvailable = driverAvailable;
}
public void startMoving() {
if (numberOfPassengers > 0) {
fastenPassengersBelts();
}
fastenDriverBelt();
}
public void fastenPassengersBelts() {
}
public void fastenDriverBelt() {
}
public abstract int getMaxSpeed();
public boolean isSummer(Date date , Date summerStart, Date summerEnd){
return date.after(summerStart)&&date.before(summerEnd);
}
public double getWinterConsumption(int length){
return winterFuelConsumption*length + winterWarmingUp;
}
public double getSummerConsumption(int length){
return summerFuelConsumption*length;
}
}