在我的Android项目中,我有一个名为Activity的主TestFIO,它位于程序包org.testing.file.io.main中,我试图使其保持清晰,并将所有必须的功能发送给了一个名为FileManipulator的新类。位于org.testing.file.io.main.manipulatorFileManipulator类的外观如下:

package org.testing.file.io.main.manipulator;

// imports here

public class FileManipulator extends TestFIO {
    public String readFileFromCard(String location) {
        // some code here
    }

    // more functions here
}


这是TestFIO的示例:

// header with package and imports

import org.testing.file.io.main.manipulator.FileManipulator;

public class TestFIO extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final String[] fileString = readFileFromCard(Environment.getExternalStorageDirectory() + "test.txt");
    }
}


问题是Eclipse在readFileFromCard下划线并显示以下错误:



我做错了什么,或者如何正确地将代码组织在软件包中?

PS:对不起,如果这是一个愚蠢的问题,我来自iOS开发。

最佳答案

编译问题是因为您试图从超类调用子类中定义的方法。继承不是那样的。子类继承了超类的所有公共方法和受保护的方法,但是超类对其子类的方法一无所知。

另外,让FileManipulator扩展Activity类似乎并不合理。 FileManipulator是否通过“ is-a”测试,换句话说,它是Activity的一种吗?似乎它是Activity用来完成其工作的“帮助”类。在这种情况下,FileManipulator不应扩展TestFIO,而应是独立的,由TestFIO创建。

10-08 17:38