我可以为接口创建一个对象吗?
是否可以为接口创建对象?如果是,如何完成?根据我的观点,下面的代码说我们可以:
Runnable r = new Runnable() {
// some implementation
}
是否可以为接口创建对象?如果是,如何完成?根据我的观点,下面的代码说我们可以:
Runnable r = new Runnable() {
// some implementation
}
这不是在创建 Interface 的实例,而是在创建一个实现接口的类。所以当你写:
Runnable runnable = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
}
};
您实际上是在创建一个实现 Runnable 接口的类。您需要遵循此处的所有规则,在这里,我们正在重写 的run方法。抽象类也有类似的东西。我们可以用一个例子来测试:Runnable
public abstract class AbstractClass {
public void someMethod() {
System.out.println("abstract class");
}
}
和另一个类,即:TestClass
public class TestClass {
public static void main(String[] args) {
AbstractClass abstractClass = new AbstractClass() {
public void someMethod() {
System.out.println("concrete class method");
}
};
abstractClass.someMethod();
}
}
这将创建我们正在覆盖的子类的实例;此程序打印:someMethod()
concrete class method
这证明我们正在创建子类的实例。
您无法直接实例化接口,但可以实例化实现该接口的类:
public class RunClass implements Runnable {
// Class implementation
}
Runnable r = new RunClass();
这与您正在内联执行的操作基本相同。new Runnable() 后面的括号将包含内联实现。