我对抽象类有疑问。
首先......我正在使用谷歌翻译,对不起:(我希望你理解。
如果无法实例化抽象类,那么这段代码是什么:
public class Ppal {
public void start(){
ABS clsAbs = new ABS() {
@Override
public void absMetod() {
}
};
clsAbs.metod();
}
}
ABS:
public abstract class ABS{
public void metod(){}
public abstract void absMetod();
}
ABS clsAbs = new ABS () {...
这不是一个实例吗?可以使用clsAbs
不能使用抽象类,只能创建抽象模型......
它可以用作匿名类,但是这个(ABS clsAbs = new ABS () {...
)不是匿名的。
非常感谢你!
答案 0 :(得分:12)
您正在实例化一个扩展class ABS
的匿名类。你可以实例化这个匿名类,因为它定义了ABS
中的所有抽象方法(感谢Nebelmann)
如果您创建类似public class Foo extends ABS
的类来实现absMetod()
你可以这样做:ABS bar = new Foo()
答案 1 :(得分:1)
您需要了解的是这个
ABS clsAbs = new ABS() {
@Override
public void absMetod() {
}
};
在创建扩展ABS
class