如何在Android中使用重写方法制作类?

时间:2017-08-04 07:36:40

标签: android override

我是Android的新手,我该怎么做? 我创建了一个类FixedDelayTimer,我使用TimerTask

public class FixedDelayTimer extends Timer{

public FixedDelayTimer()
{
...
}

public void start(long delay, long period)
{
    ...
    updateTask = new TimerTask() {
        // !! method run() should be override
        public void run() {
            // TODO
        }
    };
    ...
}   

}

我希望来自run()的方法TimerTask可以覆盖:

public class MainActivity extends Activity {
FixedDelayTimer updateTask;

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

 setContentView(com.example.eleizo.firstapplication.R.layout.activity_main); 

    updateTask = new FixedDelayTimer(){
        @Override
        public void run(){
            new DownloadImage().execute("http://");
        }
    };       
}

在正确的答案后编辑:

// !! method task() should be override
public void task(){
    // TODO
}

//таймер запущен, задача выполняется
public void start(long delay, long period)
{
    ...
    updateTask = new TimerTask() {
        @Override
        public void run() {
            task();
        }
    };
    ...
}

1 个答案:

答案 0 :(得分:0)

当然,因为run是匿名内部类的一部分。在这种方法中:

public void start(long delay, long period)
{
    ...
    updateTask = new TimerTask() {
        // !! method run() should be override
        public void run() {
            // TODO
        }
    };
    ...
}  

您无法覆盖run,因为它不是您班级的一部分。它是你在那里创造的内在阶级的一部分。如果要覆盖它,您实际上需要在班级中声明run 。通过在课堂上宣布,我并不意味着在一个嵌套的课堂上。我的意思是在你的课堂内