There is an abstract BaseGame class that will be inherited by specific game classes.
This class has an attribute requestHandler that will be used in all subclasses and should be initialized in the constructor, so I put this constructor in superclass.
Is it better (make more sense) to keep requestHandler private (case 1) and access it in subclasses via accessors or make it protected (case 2) and access it directly? Are there any implications in the use of case 1 or case 2, or it just does not matter?
case1:
public abstract class BaseGame {
private RequestHandler requestHandler;
protected BaseGame(RequestHandler requestHand) {
this.requestHandler = requestHand;
}
protected RequestHandler getRequestHandler() {
return requestHandler;
}
}
public class SoccerGame extends BaseGame {
public SoccerGame(RequestHandler requestHand) {
super(requestHand);
}
public void doSoccerGame() {
getRequestHandler().submitScore(10);
}
}
case 2:
public abstract class BaseGame {
protected RequestHandler requestHandler;
protected BaseGame(RequestHandler requestHand) {
this.requestHandler = requestHand;
}
}
public class SoccerGame extends BaseGame {
public SoccerGame(RequestHandler requestHand) {
super(requestHand);
}
public void doSoccerGame() {
requestHandler.submitScore(10);
}
}