будет препятствовать тому, чтобы дочерний класс переопределил их.
рабатывал карточный класс для игры в блэкджек.
Мой замысел состоял в том, чтобы создать класс Card с помощью getValue (), который возвращает, например, 11 для J, 12 для Q и 13 для K, а затем расширить его с помощью класса BlackjackCard, чтобы переопределить этот метод, чтобы эти карты возвращали 10.
Затем что-то поразило меня: объекты класса Card должны быть неизменными. Поэтому я перечитал Effective Java 2nd Edition, чтобы посмотреть, что делать, и обнаружил, что неизменяемые классы должны быть окончательными, чтобы избежать подкласса, нарушающего неизменность.
Я также посмотрел в Интернете, и все, кажется, согласны с этим.
Так должен ли быть класс Card окончательным?
Как вы можете нарушить неизменность этого класса, расширяя его:
class Card {
private final Rank rank;
private final Suit suit;
public Card(Rank rank, Suit suit) {
this.rank = rank;
this.suit = suit;
}
public Rank getRank() {
return rank;
}
public Suit getSuit() {
return suit;
}
public int getValue() {
return rank.getValue();
}
}
Благодарю.