gpt4 book ai didi

java - 抽象类和多态问题

转载 作者:行者123 更新时间:2023-11-30 00:56:22 27 4
gpt4 key购买 nike

我正在尝试执行以下操作:

public abstract class MyBaseFragment extends Fragment {
private FloatingActionButton fab;

protected void initFab(View contentView, int resourceId) {
fab = (FloatingActionButton) contentView.findViewById(resourceId);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
launchDetailsDialogFragment(new Animal());
}
});
}

private void launchDetailsDialogFragment(Animal animal) {
//...
}
}

这里的关键点是关于制作新 Animal 的路线。

我有各种类型的动物——猫、狗等。有关猫的页面、有关狗的页面等,它们都将扩展 MyBaseFragment。因此,单击 Cat 页面上的 FloatingActionButton 将执行一个函数,该函数将一个新的 Cat() 传递给 DialogFragment,您可以在其中编辑其详细信息。狗也一样。但是 DialogFragment 的每个细节都有点不同,因为 Cats 和 Dogs 具有彼此不同的属性,即使它们都是 Animals。

但是我不知道如何在这里应用多态性。现在所有 MyBaseFragment 都知道它将创建一个新的 Animal,但我真的希望它创建一个新的 Cat,或一个新的 Dog,等等,这取决于我扩展基本 fragment 的位置。

我该怎么做?

最佳答案

只需将被调用的方法抽象化,让每个具体类填写自己的实现即可

public abstract class MyBaseFragment extends Fragment {
private FloatingActionButton fab;

protected void initFab(View contentView, int resourceId) {
fab = (FloatingActionButton) contentView.findViewById(resourceId);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
launchDetailsDialogFragment();
}
});
}

protected abstract void launchDetailsDialogFragment();
}

关于java - 抽象类和多态问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40091192/

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