gpt4 book ai didi

java - 强制子类将某个字段的值设为 "implement"

转载 作者:行者123 更新时间:2023-12-02 02:51:27 25 4
gpt4 key购买 nike

我有一个 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 字段。由于我在父类(super class)中使用这些字段,因此我也需要在那里声明它们,并且它们都被实例化为 null。

所以每当我调用toggleButton()时来自子类的方法,null使用父类(super class)中的值。但是,我想在父类(super class)中实现此方法(以避免代码重复),但仍使用子类字段。

我怎样才能实现这个目标?

最佳答案

将两个图标作为参数传递给父类(super class):

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

关于java - 强制子类将某个字段的值设为 "implement",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43787413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com