有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java强制子类“实现”字段的值

我在Java中有一个Button基类,以及从这个类继承的几种类型的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);
        }

    }

}

我希望每个按钮子类都能够调用toggleButton()方法,但它们都有不同的onIcon和officecon字段。因为我在超类中使用这些字段,所以我也需要在那里声明它们,并且它们都被实例化为null

因此,每当我从子类调用toggleButton()方法时,都会从超类使用null值。然而,我想在超类中实现这个方法(以避免代码重复),但仍然使用Subclass字段

我怎样才能做到这一点


共 (1) 个答案

  1. # 1 楼答案

    将两个图标作为参数传递给超类:

    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