The UniqueGuesser class has to implement setFirstGuess (all concrete classes extending an abstract class should implement the abstract methods of the parents), and it can and will override the protected nextGuess method:
package packt.java189fundamentals.example.mastermind; import java.util.HashSet; public class UniqueGuesser extends Guesser { public UniqueGuesser(Table table) { super(table); } @Override protected void setFirstGuess() { int i = lastGuess.length - 1; for (var color = table.manager.firstColor(); i >= 0; color = table.manager.nextColor(color)) { lastGuess[i--] = color; } }
The setFirstGuess method selects the first guess in such a way that any possible color variations that come after the first one create the guesses ...