In the following proposed solution, superclass is abstract and has all three members set to a default value.
Subclass has different constructors so the programmer can instantiate it.
If first constructor is used, all members will have the default values.
If second constructor is used, you give an initial value to actionText member leaving other two members with the default value...
If third constructor is used, you instantiate it with a new value for actionText and toolTip, leaving imageURl whith the default value...
And so on.
public abstract class Action {
protected String text = "Default action text";
protected String toolTip = "Default action tool tip";
protected String imageURl = "http://myserver.com/images/default.png";
.... rest of code, I guess setters and getters
}
public class MyAction extends Action {
public MyAction() {
}
public MyAction(String actionText) {
setText(actionText);
}
public MyAction(String actionText, String toolTip_) {
setText(actionText);
setToolTip(toolTip_);
}
public MyAction(String actionText, String toolTip_; String imageURL_) {
setText(actionText);
setToolTip(toolTip_);
setImageURL(imageURL_);
}
}