Описание схожих классов Java

230
05 сентября 2017, 09:14

Нужно описать 2 класса, подскажите правильно ли я это сделал? Если нет подскажите как сделать правильно. Заранее спасибо.

public interface Transport { public void go(); }
public class Car implements Transport{
  private String color;
  private Double price;
  private int age;
  private int speed;
  public String getColor() {
    return color;
  }
  public void setColor(String color) {
    this.color = color;
  }
  public Double getPrice() {
    return price;
  }
  public void setPrice(Double price) {
    this.price = price;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public Car(String color, Double price, int age, int speed) {
    this.color = color;
    this.price = price;
    this.age = age;
    this.speed = speed;
  }
  public void go() {
    System.out.println("Понеслась!");
  }
  public int getSpeed() {
    return speed;
  }
}
public class Motorcycle implements Transport {
  private String color;
  private Double price;
  private int age;
  private int speed;
  public String getColor() {
    return color;
  }
  public void setColor(String color) {
    this.color = color;
  }
  public Double getPrice() {
    return price;
  }
  public void setPrice(Double price) {
    this.price = price;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }

  public void setSpeed(int speed) {
    this.speed = speed;
  }
  public Motorcycle(String color, Double price, int age, int speed) {
    this.color = color;
    this.price = price;
    this.age = age;
    this.speed = speed;
  }

  public void go() {
    System.out.println("Поехали!");
  }
  public int getSpeed() {
    return speed;
  }
}
public class Main {
  public static void main(String[]args) {
    Car volvo = new Car("Red", 520000.00, 7, 90);
    System.out.println(volvo.getSpeed());
    volvo.go();
    Motorcycle scorpio = new Motorcycle("Green", 320000.00, 3, 75);
    System.out.println(scorpio.getSpeed());
    scorpio.go();
  }
}
Answer 1

Используйте принципы ООП. У вас у обоих сущностей одинаковые поля и методы, различается лишь поведение в методе go, кроме того вы не используете интерфейс в классе Main.

public interface Vehicle {
    void go();
    int getSpeed();
    int getAge();
    double getPrice();
    String getColor();
}
public abstract class Transport implements Vehicle {
    private final String color;
    private final Double price;
    private final int age;
    private final int speed;
    public Transport(String color, Double price, int age, int speed) {
        this.color = color;
        this.price = price;
        this.age = age;
        this.speed = speed;
    }
    @Override
    public int getSpeed() {
        return speed;
    }
    @Override
    public int getAge() {
        return age;
    }
    @Override
    public double getPrice() {
        return price;
    }
    @Override
    public String getColor() {
        return color;
    }
}

public static void main(String[] args) {
    Vehicle car = new Car("Red", 520000.00, 7, 90);
    Vehicle moto =  new Motorcycle("Green", 320000.00, 3, 75);
    List<Vehicle> myTransport = Arrays.asList(car, moto);
    for (Vehicle vehicle : myTransport) {
        vehicle.go();
        System.out.println(vehicle.getSpeed());
    }
}
private static class Car extends Transport {
    public Car(String color, Double price, int age, int speed) {
        super(color, price, age, speed);
    }
    @Override
    public void go() {
        System.out.println("gogo car");
    }
}
private static class Motorcycle extends Transport {
    public Motorcycle(String color, Double price, int age, int speed) {
        super(color, price, age, speed);
    }
    @Override
    public void go() {
        System.out.println("gogo moto");
    }
}
READ ALSO
Хранение в массиве ссылок на другой массив

Хранение в массиве ссылок на другой массив

Как можно хранить в одном массиве (1)ссылки на другой массив(2)Производя изменения во втором массиве менялись значения в первом

172
Крашится приложение в эмуляторе Android Studio

Крашится приложение в эмуляторе Android Studio

Я использую эмулятор AVD Android Studio в UbuntuЭмулятор работает нормально только тогда когда я запускаю приложения стандартные

255
Базовые типы в Java

Базовые типы в Java

В лекции Шипилева есть замечание о том, что в java из базовых типов есть 8 примитивов типов и ссылка(8:30)Но ведь ссылка - это один из классов пакета...

276
Можно ли совместить generic type двух разных классов в Java?

Можно ли совместить generic type двух разных классов в Java?

Делаю андроид приложениеНа DataBinding описываю смену врагментов в рамках одной активити

200