是否可以创建一个实现我的接口的类来自动扩展另一个类?
更具体一点,我希望我的实现始终是Thread的扩展。
或者就实现Runnable而言,但公共接口Name实现someInterface似乎错了......
public interface userValidTimer extends Thread {
}
然而,这给了我一个netbeans错误。
答案 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{ }