1

我有一个关于抽象类的问题。

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

如果抽象类不能被实例化,确切地说,这段代码是什么:

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,不能使用Abstract classes,只能创建一个抽象模型...

它可以用作匿名类,但 this ( ABS clsAbs = new ABS () {...) 不是匿名的。

非常感谢您!

4

2 回答 2

12

您正在实例化一个匿名类,该类扩展class ABS. 你可以实例化这个匿名类,因为它定义了所有的抽象方法ABS(感谢 Nebelmann)

如果您创建一个这样的类public class Foo extends ABS实现absMetod()

你可以这样做:ABS bar = new Foo()

于 2013-01-22T11:03:34.077 回答
1

你只需要了解这个

ABS clsAbs = new ABS() {

        @Override
        public void absMetod() {
        }
    };

您在创建扩展 ABS类的匿名类时实现抽象方法 absMetod()

于 2013-01-22T11:09:07.943 回答