У меня есть пакет с
public abstract class Player { /*...*/ }
и эти
public abstract class GamePlayer extends Player { /*...*/ }
public abstract class TournamentPlayer extends Player { /*...*/ }
public abstract class StatelessPlayer extends Player { /*...*/ }
Пользователи пакета нуждаются в игроках, но чтобы использовать пакет, не нарушая его, я требую, чтобы они никогда напрямую не продлевали игрока. Вместо этого они должны расширить один из предоставленных подклассов.
Вопрос: Как мне запретить пользователям расширять Player напрямую?
Я ищу способ, позволяющий сделать очевидным, что этот запрет предназначен.