通过Android开发扩展类的不同方法?

时间:2012-05-14 07:45:45

标签: java android extends

所以我一直在阅读关于Android开发的教程,我遇到了一些我在Java开发过程中从未见过的东西(主要是学校工作):

Thread th = new Thread() { 
    public void run() {
        if (iotdHandler == null) {
            iotdHandler = new IotdHandler(); 
        }
        iotdHandler.processFeed(); resetDisplay(
        iotdHandler.getTitle(), 
        iotdHandler.getDate(),
        iotdHandler.getUrl(),
        iotdHandler.getDescription());
        dialog.dismiss();
    }
};
th.start();

现在这本书说扩展线程,从某种意义上说,我有点理解它在做什么,但它不遵循通常的方式来扩展java中的普通类,如下所示:

public Class Dog extends Animal...

然后你可以继续并覆盖方法等。但我的问题是,它在引用新的Thread对象时实际上做了什么,但同时在它之后创建了一个方法,我假设在Thread类中重写某种方法?由于我不知道它叫什么,我不能真正搜索它,所以我为明显的问题道歉,如果它是一个。任何帮助将非常感激。

2 个答案:

答案 0 :(得分:4)

修改你的Java书籍:)它被称为anonymous inner class,最初是为了促进Java GUI开发而引入的(使用AWT / Swing)。由于Android UI开发遵循许多相同的模式,因此在Android中经常使用它。

它的作用是实例化一个类(不在单独的文件中定义它等),覆盖它的一些方法(在本例中为run())。如果为其所有方法提供实现,也可以实现此接口。

答案 1 :(得分:0)

首先,这不是Android特有的。您可以在“普通Java”中以相同的方式扩展。当只需要一次“类扩展”时,执行类扩展的原因就是减少类。在你的例子中,写

是一样的
public class MyThread extends Thread
{
   @Override
   public void run() {
   [...]
   } 
};

以及后来:

MyThread thread = new MyThread();
thread.start();

所以优点是,您不需要实现类并稍后实例化它。