Когда использовать наследование, а когда перечисление?
> В случае создания кораблей разного типа какой подход лучше ? Создать абстрактный класс корабль и он него наследовать разные типы кораблей, либо же создать 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; } }