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

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

DDD
发布: 2024-12-24 15:57:18
原创
290 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板