我正在经历this tutorial,他们在其中创建了一个扩展ListActivity的抽象类,名为AbstractListViewActivity。然后以下列方式使用该类:
public class EndlessListViewActivity extends AbstractListViewActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.endless);
datasource = Datasource.getInstance();
footerView = ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer, null, false);
getListView().addFooterView(footerView, null, false);
setListAdapter(new CustomArrayAdapter(this, datasource.getData(0, PAGESIZE)));
getListView().removeFooterView(footerView);
AbstractListViewActivity还包含一个AsyncTask内部类,然后在EndlessListViewActivity中使用。为什么这里使用抽象类?出于什么目的?
我试着查看一些文档,但没有帮助
答案 0 :(得分:4)
如果您查看the source for the tutorial,则表明此处没有抽象方法,因此此处的抽象关键字仅用于确保您无法在不扩展AbstractListViewActivity
的情况下添加extends ListActivity
原因如Ankur Shanbhag so eloquently writes, is:
抽象类意味着类的定义不完整,因此无法实例化。尽管它没有抽象方法,但它是一个指示符,该类可用于继承。即使它具有其中所有方法的实现,但实现可能仍然不完整,并且必须被扩展类覆盖。
请注意,示例活动extends Activity
,according to the source本身ListActivity
- 以及Activity
和常规{{1}}都不是抽象的。