是否可以从抽象类调用方法?

时间:2015-01-11 21:25:15

标签: android methods abstract-class

我的Abstract类如下:

AbstractFilePickerFragment.java

public abstract class AbstractFilePickerFragment<T> extends ListFragment
        implements LoaderManager.LoaderCallbacks<List<T>>

....

....

public void GoBackToPreviousDirectory() {
    currentPath = getParent(currentPath);
    refresh();
  }
}

OtherActivity.java

private AbstractFilePickerFragment<T> mAbstractFilePickerFragment;

@Override
protected void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_ACTION_BAR);
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_layout);

   //THIS LINE SAYS "Cannot instantiate the type AbstractFilePickerFragment"
    mAbstractFilePickerFragment = new AbstractFilePickerFragment();
}

    public void GoBackToPreviousDir_onClick(MenuItem item) {
        mAbstractFilePickerFragment.GoBackToPreviousDirectory();
    }
}

是否有人可以从AbstractFilePickerFragment类调用GoBackToPreviousDirectory ???

我知道静态方法可行,但我不能为这种情况制作静态方法。

非常感谢您的帮助

2 个答案:

答案 0 :(得分:3)

没有。首先,您不要从调用方法。您调用对象方法,因为对象是类的实例。抽象类无法实例化。

答案 1 :(得分:2)

为了调用非静态方法,您必须实例化该类。

根据定义,抽象类无法实例化。所以答案是否定的

如果仍需要访问该方法,则必须创建一个扩展抽象类的类,并实现该类中的所有方法。然后,您可以在程序中实例化扩展类并调用该方法。