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