如何强制实现接口的类也扩展其他类?

时间:2015-05-24 11:25:27

标签: java multithreading interface extends

是否可以创建一个实现我的接口的类来自动扩展另一个类?
更具体一点,我希望我的实现始终是Thread的扩展。 或者就实现Runnable而言,但公共接口Name实现someInterface似乎错了......

public interface userValidTimer extends Thread {
}

然而,这给了我一个netbeans错误。

3 个答案:

答案 0 :(得分:3)

您无法强制实现接口的所有类扩展特定类,因为这会破坏接口的目的。

但是,如果将接口的方法放入扩展所选基类的抽象类中,则无需接口即可实现相同的效果。换句话说,而不是这个

interface MyInterface {
    void methodOne();
    void methodTwo();
}

这样做:

abstract class MyAbstractClass extends TheClassYouWantToExtend {
    public abstract void methodOne();
    public abstract void methodTwo();
}

答案 1 :(得分:2)

  

如何强制实现接口的类也扩展其他类?

你不能。

但是,如果将界面转换为抽象类,它将起作用:

public abstract class UserValidTimer extends Thread {
    // add suitable constructors ...
    // add your interface methods here as abstract methods.
}

但还有另一点需要指出。一般来说,通过扩展Thread类来实现一个线程是一个坏主意。在大多数情况下,更好的选择是在Runnable中实现自定义线程逻辑,并将runnable的实例作为构造函数参数传递给vanilla Thread;例如使用匿名Runnable类。

    Thread t = new Thread(new Runnable(){
       public void run() { /* put your thread logic here */ }
    });

为什么呢?因为您可以轻松地修改它,以便可以将runnable交给线程池,执行程序或fork-join池来执行。

答案 2 :(得分:0)

接口不能扩展类。你需要的是

public class MyClass extends MySuperClass implements MyInterface{ }