在包中组织代码时遇到问题

时间:2012-02-01 04:27:37

标签: java android eclipse

在我的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并显示以下错误:

Eclipse Error Dialog

我做错了什么或在包中组织代码的正确方法是什么?

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

2 个答案:

答案 0 :(得分:1)

我看到TestFIO是父类,FileManipulator是根据你的代码的子类。 那么你不能调用子类的方法,你需要一个FileManipulator的实例。 我错了吗?

答案 1 :(得分:1)

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

此外,让FileManipulator类扩展Activity似乎也不合理。 FileManipulator是否会通过“is-a”测试,换句话说,它是Activity的一种吗?它似乎更像是Activity将用于完成其工作的“助手”类。在这种情况下,FileManipulator不应该TestFIO延伸,而应该由TestFIO创建。