在我的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开发。
答案 0 :(得分:1)
我看到TestFIO是父类,FileManipulator是根据你的代码的子类。 那么你不能调用子类的方法,你需要一个FileManipulator的实例。 我错了吗?
答案 1 :(得分:1)
编译问题是因为你试图从超类中调用子类中定义的方法。继承不起作用;子类从超类继承所有公共和受保护的方法,但是超类对其子类的方法一无所知。
此外,让FileManipulator
类扩展Activity
似乎也不合理。 FileManipulator
是否会通过“is-a”测试,换句话说,它是Activity
的一种吗?它似乎更像是Activity
将用于完成其工作的“助手”类。在这种情况下,FileManipulator
不应该TestFIO
延伸,而应该由TestFIO
创建。