Когда использовать наследование, а когда перечисление?
> В случае создания кораблей разного типа какой подход лучше ? Создать абстрактный класс корабль и он него наследовать разные типы кораблей, либо же создать enum класс с типами кораблей?
enum выглядит лаконичней и по смыслу ближе, ведь у нас корабли не отличаются по функциональности друг от друга? Значит нам нечего переопределять для них, как потомков, кроме длины
Поэтому используем enum, вроде такого:
public enum ShipType {
ONE("Однопалубный", 1),
TWO("Двухпалубный", 2),
THREE("Трехпалубный", 3),
FOUR("Четырехпалубный", 4);
private String shipName;
private int numOfDecks;
ShipType(String shipName, int numOfDecks) {
this.shipName = shipName;
this.numOfDecks = numOfDecks;
}
public String getShipName() {
return shipName;
}
public int getNumOfDecks() {
return numOfDecks;
}
}