gpt4 book ai didi

java - 如何从共享非常相似逻辑的子类中提取父类?

转载 作者:行者123 更新时间:2023-11-30 05:47:33 25 4
gpt4 key购买 nike

我正在尝试创建几个自定义按钮,最终可以将它们添加到 JToolBar 中。我有一个从 JButton 扩展而来的类,如下所示:

public class CustomToolbarJButton extends JButton {
public void setCustomProperties() {
this.putClientProperty("Property1", "Value1");
}

// Some other CustomToolbarJButton specific code here.
}

我有另一个类 CustomToolbarJToggleButton,它从 JToggleButton 扩展而来,并且具有与 setCustomProperties() 方法完全相同的代码。

我的问题是,有什么方法可以创建一个抽象父类,这两个类最终可以继承该父类,以便我可以将 setCustomProperties() 方法拉到该父类。

编辑

我想添加一些关于我最终想做的事情的背景。

我想要一个像这样的父类:

public abstract class CustomToolbarButton extends <some-class> {
public void setCustomProperties() {
this.putClientProperty("Property1", "Value1");
}
}

public class CustomToolbarJButton extends CustomToolbarButton {
// Some other CustomToolbarJButton specific code here.
}

public class CustomToolbarJToggleButton extends CustomToolbarButton {
// Some other CustomToolbarJToggleButton specific code here.
}

最终为了将按钮添加到工具栏,我想创建一个如下方法:

public void addCustomButtonToToolbar(boolean standardButtonOrToggleButton, String text) {
CustomToolbarButton customToolbarButton = standardButtonOrToggleButton ? new CustomToolbarJButton(text) : new CustomToolbarJToggleButton(text);
customToolbarButton.setCustomProperties();
this.toolbar.add(customToolbarButton); // toolbar is a JToolBar. I wanted to add the customToolbarButton directly to it, just like a standard JComponent.
}

这样的事情可能吗?

最佳答案

是的,您可以使用接口(interface)来做到这一点,它与这样的抽象类非常相似,但只有方法,没有字段:

public interface CustomProperties {
public void setCustomProperties();
}

和:

public class CustomToolbarJButton extends JButton implements CustomProperties {
public void setCustomProperties() {
this.putClientProperty("Property1", "Value1");
}

// Some other CustomToolbarJButton specific code here.
}

注意implements关键字,您可以同时从多个接口(interface)继承..

我认为您可能需要这样做,您可以使用子类创建 CustomProperties 类型的对象。

CustomProperties obj = (CustomProperties) new CustomToolbarJButton();

我希望它有帮助:)

编辑:这可能会有所帮助,可能您有不同的要求..

public interface CustomProperties {
public void setCustomProperties() {
this.putClientProperty("Property1", "Value1");
}
}

.

public class CustomToolbarJButton extends JButton implements CustomProperties {
// Some other CustomToolbarJButton specific code here.
}

.

public class CustomToolbarJToggleButton extends JToggleButton implements CustomProperties {
// Some other CustomToolbarJToggleButton specific code here.
}

还有这个:编辑:

public void addCustomButtonToToolbar(boolean standardButtonOrToggleButton, String text) {
CustomProperties customToolbarButton = standardButtonOrToggleButton ? new CustomToolbarJButton(text) : new CustomToolbarJToggleButton(text);
customToolbarButton.setCustomProperties();
this.toolbar.add((Component) customToolbarButton);
}

关于java - 如何从共享非常相似逻辑的子类中提取父类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54586005/

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