如果无法实例化抽象类,那么这段代码是什么:ABS clsAbs = new ABS(){

时间:2013-01-22 11:02:10

标签: java class abstract-class abstract

我对抽象类有疑问。

首先......我正在使用谷歌翻译,对不起:(我希望你理解。

如果无法实例化抽象类,那么这段代码是什么:

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 () {...)不是匿名的。

非常感谢你!

2 个答案:

答案 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

的匿名类时,您正在实现抽象方法absMetod()