Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android @用我自己的方法重写?_Android_Class_Methods_Overriding_Super - Fatal编程技术网

Android @用我自己的方法重写?

Android @用我自己的方法重写?,android,class,methods,overriding,super,Android,Class,Methods,Overriding,Super,我有一个类似于您在下面看到的设置。我刚刚注意到“YourClass”实际上实现了“MyClass”中的一些逻辑。我试图在“YourClass”中的setupViews()上方抛出一个@Override,但它无法编译,说明“DataManagerActivity类型的方法setupViews()必须重写一个超类方法” 代码已更改。这是一个例子。我只是打错了。同样的问题。我如何让您的类从MyClass实现setupViews()扩展MyClass public class MyClass exten

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

代码已更改。这是一个例子。我只是打错了。同样的问题。我如何让您的类从MyClass实现setupViews()扩展MyClass

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() {

        ....

    }
}

@Override
指示编译器失败,除非它下面的方法重写了超类中的方法(您从中扩展的方法)或它实现的接口之一

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

如果这是您想要的,那么您希望您的方法受到
保护
——如中所示,在定义它的类的子类中是可访问和可重写的,但不能从外部访问

编辑2”:所以底线是:


如果希望
setupview()
在子类(例如
YourClass
)中可重写,请将其设置为
受保护的
。否则,将其设为私有

@Override
指示编译器失败,除非它下面的方法重写超类中的一个方法(您从中扩展的方法)或它实现的一个接口

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

如果这是您想要的,那么您希望您的方法受到
保护
——如中所示,在定义它的类的子类中是可访问和可重写的,但不能从外部访问

编辑2”:所以底线是:

如果希望
setupview()
在子类(例如
YourClass
)中可重写,请将其设置为
受保护的
。否则,请将其设置为私有

我想您应该使用
this.setupview()

我想你想用
this.setupview()

也是这样,但他提到的错误实际上是覆盖了
私有setupview()
:)很高兴我能提供帮助。那么接受吗?:)谢谢你的帮助。问题是这两者都是“私人的”。但是在MyClass中有if(true){Toast.maketoast}逻辑,它显示在MyClass和YourClass中。你班上既没有逻辑也没有美味的吐司/me=困惑。我不在乎它是否可重写,但我绝对不希望它在我的子类中实现它:)@Dan受保护的方法也可以由同一个包中的类访问。这也是,但他提到的错误实际上是重写了
私有setupview()
:)很高兴我能提供帮助。那么接受吗?:)谢谢你的帮助。问题是这两者都是“私人的”。但是在MyClass中有if(true){Toast.maketoast}逻辑,它显示在MyClass和YourClass中。你班上既没有逻辑也没有美味的吐司/me=困惑。我不在乎它是否可重写,但我绝对不希望它在我的子类中实现它:)@Dan受保护的方法也可以被同一包中的类访问。谢谢,谢谢,谢谢!无论我试图在哪里放置@Override,它都告诉我必须重写一个超类方法。我无法让“YourClass”停止实现“MyClass”setupview()。这很好用!谢谢,谢谢,谢谢!!无论我试图在哪里放置@Override,它都告诉我必须重写一个超类方法。我无法让“YourClass”停止实现“MyClass”setupview()。这很好用!