@Override我自己的方法?

时间:2011-03-02 20:05:18

标签: android class methods override super

我的设置类似于您在下面看到的设置。我刚刚注意到“YourClass”实际上是从“MyClass”实现了我的一些逻辑。啊。我试图在“YourClass”中抛出一个@Override上面的setupViews(),但它不会编译声明,“DataManagerActivity类型的方法setupViews()必须覆盖超类方法”

代码已更改。这是一个例子。我输入了错误的东西。同样的问题。如何保持扩展MyClass的YourClass不从MyClass实现setupViews()?

public class MyClass extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        setupViews();
        ...

    }

    private void setupViews() {

        ....

    }
}



public class YourClass extends MyClass {

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        setupViews();
        ...

    }

    private void setupViews() {

        ....

    }
}

2 个答案:

答案 0 :(得分:2)

@Override指示编译器失败,除非它下面的方法覆盖超类中的方法(你来自extend的方法)或它实现的interface之一。

编辑:抱歉,我可能误解了你的意思。您无法覆盖setupViews()的原因是private中的MyClass,因此无法从任何子类访问或覆盖它。

如果这是您想要的,那么您希望您的方法为protected - 在其定义的类的子类中可访问和可覆盖,但不能从外部访问。

编辑2':所以底线:

如果您希望setupViews()在子类中可以覆盖(例如YourClass),请将其设为protected。否则,请将其设为private

答案 1 :(得分:1)

我想你想用 this.setupViews();