0

我有一个类似于您在下面看到的设置。我刚刚注意到“YourClass”实际上是在“MyClass”中实现我的一些逻辑。啊。我试图在“YourClass”中的 setupViews() 上方抛出一个@Override,但它不会编译说明,“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() {

        ....

    }
}
4

2 回答 2

2

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

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

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

编辑 2':所以底线:

如果您想setupViews()在子类中被覆盖(例如YourClass),请将其设置为protected. 否则,做它private

于 2011-03-02T20:08:59.860 回答
1

我想你想用 this.setupViews();

于 2011-03-07T19:32:13.633 回答