【发布时间】:2021-11-12 04:53:13
【问题描述】:
我有一个函数,我希望它返回从同一类继承的子类之一。 主类是button,继承类是button1,button2 ... 我不明白当我的函数返回某些东西时,它总是突出主类的特征。
我的最终目标是在角色用户的函数中传递按钮类的变量。 在下面的示例中,只有名称。
这是我声明类Button1、Button2和主类button的方式。
...
public static Button1 Button1;
public static Button2 Button2;
SettingsAdapter() {
Button1 = new Button1();
Button2 = new Button2();
}
public static class Button {
final public static String name = "test";
...
}
/*** line 1 ***/
public static class Button1 extends Button {
final public static String name = "name 1";
...
}
public static class Button2 extends Button {
final public static String name = "name 2";
...
}
这是函数
public static SettingsAdapter.Button getButtonPos(int a) {
if (a == 1) {
return Button1;
} else {
return Button2;
}
如果我们printf(getButtonPos(1).name)
输出始终为test。
我想要的输出是name 1
如何让这个函数真正返回 Button1 或 Button2 的类?
【问题讨论】:
-
if ()?如果?这样可以编译吗? -
你期望输出是什么?
-
我不知道你的目标是什么,但让我印象深刻的一件事是,你的 button1 和 button2 各有两个名称字段(button.name 和 this.name)。您可能希望写入按钮类的名称字段,而不是在子类中创建另一个字段。
-
为了更清楚,我删除了 inside
If ()的条件,但也许我不应该 -
我期望的输出是
name 1,我编辑问题
标签: java android class subclass