我在Java中有一个Button基类,以及从这个类继承的几种类型的按钮子类。 Button基类看起来像这样:
public abstract class BaseButton extends AppCompatButton{
private ButtonStatus buttonStatus = ButtonStatus.OFF;
private Image onIcon;
private Image offIcon;
public void toggleButton(){
if(this.buttonStatus == ButtonStatus.ON){
this.buttonStatus = ButtonStatus.OFF;
setBackgroundResource(offIcon);
}else if(this.buttonStatus == ButtonStatus.OFF){
this.buttonStatus = ButtonStatus.ON;
setBackgroundResource(onIcon);
}
}
}
我希望每个Button子类能够调用toggleButton()
方法,但每个方法都有不同的onIcon和offIcon字段。由于我在超类中使用这些字段,我需要在那里声明它们,并且它们都被实例化为null。
因此,每当我从子类调用toggleButton()
方法时,都会从超类中使用null
值。但是,我想在超类中实现此方法(以避免代码重复),但仍使用子类字段。
我怎样才能做到这一点?
答案 0 :(得分:2)
将两个图标作为参数传递给超类:
public abstract class BaseButton extends AppCompatButton{
private ButtonStatus buttonStatus = ButtonStatus.OFF;
private Image onIcon;
private Image offIcon;
public BaseButton (Image onIcon, Image offIcon){
this.onIcon = onIcon;
this.offIcon = offIcon;
}
public void toggleButton(){
// ...
并在子类中
public class SubButton extends BaseButton {
public SubButton () {
super(IconSet.SUB_BUTTON_ICON_ON,IconSet.SUB_BUTTON_ICON_OFF);
}
// more code