首页 >Java >java教程 >Java中抽象类可以实例化吗?

Java中抽象类可以实例化吗?

DDD
DDD原创
2024-12-24 15:57:18294浏览

Can Abstract Classes Be Instantiated in Java?

我们可以实例化一个抽象类吗?

在一次面试中,有人问你是否可以实例化一个抽象类。传统上,你会回答“不”。然而,令你惊讶的是,面试官说这是可能的。

为了演示这一点,请考虑以下代码:

abstract class my {
    public void mymethod() {
        System.out.print("Abstract");
    }
}

class poly {
    public static void main(String a[]) {
        my m = new my() {};
        m.mymethod();
    }
}

尽管 my 上有抽象修饰符,但您可以使用以下命令创建它的实例一个匿名子类。您实质上是动态创建一个子类,并将其引用分配给抽象类引用 m。

根据 Java 语言规范 (JLS):

“如果类实例创建表达式以类体结尾,那么
被实例化的类是匿名类。”

所以,在这种情况下,被实例化的类不是匿名类。 my,但是一个匿名子类。

可以通过编译代码并检查生成的类文件来确认此行为。您会注意到一个名为 Poly$1.class 的新类文件,它对应于运行时创建的匿名子类。

因此,虽然您无法直接实例化抽象类,但可以通过创建匿名子类。

以上是Java中抽象类可以实例化吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn