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

If abstract classes can not be instantiated, exactly, what is this code: ABS clsAbs = new ABS () {

本问题已经有最佳答案,请猛点这里访问。

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

首先…我用的是谷歌翻译,对不起:(希望你能理解。

如果抽象类不能被实例化,那么这是什么代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Ppal {

public void start(){

    ABS clsAbs = new ABS() {

        @Override
        public void absMetod() {
        }
    };

    clsAbs.metod();
}
}

防抱死制动系统:

1
2
3
4
5
6
public abstract class ABS{

public void metod(){}
public abstract void absMetod();

}

这不是一个实例吗?可使用clsabs和抽象类不能用于创建抽象模型…

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

提前非常感谢!


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

如果您创建一个类似于public class Foo extends ABS的类来实现absMetod(),这是相同的。

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


你只需要明白

1
2
3
4
5
6
ABS clsAbs = new ABS() {

        @Override
        public void absMetod() {
        }
    };

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