wkl*_*wkl 13
您无法实例化抽象类或接口 - 您可以实例化其子类/实现者之一.
这种事情的例子在Java Collections的使用中是典型的.
List<String> stringList = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
您使用接口类型List<T>
作为类型,但实例本身是一个ArrayList<T>
.
要创建抽象类的对象,只需使用new就像创建其他非抽象类的对象一样,只有一个小差异,如下所示:
package com.my.test;
public abstract class MyAbstractClass {
private String name;
public MyAbstractClass(String name)
{
this.name = name;
}
public String getName(){
return this.name;
}
}
package com.my.test;
public class MyTestClass {
public static void main(String [] args)
{
MyAbstractClass ABC = new MyAbstractClass("name") {
};
System.out.println(ABC.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
以同样的方式您可以创建接口类型的对象,如下所示:
package com.my.test;
public interface MyInterface {
void doSome();
public abstract void go();
}
package com.my.test;
public class MyTestClass {
public static void main(String [] args)
{
MyInterface myInterface = new MyInterface() {
@Override
public void go() {
System.out.println("Go ...");
}
@Override
public void doSome() {
System.out.println("Do ...");
}
};
myInterface.doSome();
myInterface.go();
}
}
Run Code Online (Sandbox Code Playgroud)
有两种方法可以实现这一目标。
1)要么在新类中扩展/实现抽象类/接口,创建这个新类的对象,然后根据您的需要使用该对象。
2) 编译器允许您在代码中创建接口的匿名对象。
例如。( 新的 Runnable() { ... } );
希望这可以帮助。
问候,马亨德拉·利亚。