温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java抽象类能实例化吗

发布时间:2026-10-08 11:13:19 来源:亿速云 阅读:97 作者:小樊 栏目:编程语言

在 Java 中,抽象类(abstract class)本身不能直接实例化。

1️⃣ 为什么不能实例化?

  • 抽象类可能包含 抽象方法(没有方法体)
  • 如果允许实例化,调用这些抽象方法时就会出错
  • 因此 Java 编译器禁止 new 抽象类()
abstract class Animal {
    abstract void eat();
}

// 错误写法
Animal a = new Animal(); // ❌ 编译错误

2️⃣ 但可以通过“子类”间接实例化

抽象类 必须被继承,由子类实现抽象方法后才能创建对象。

class Dog extends Animal {
    void eat() {
        System.out.println("狗吃骨头");
    }
}

Animal a = new Dog(); // ✅ 正确(多态)

这里:

  • Animal 是抽象类
  • Dog 是具体子类
  • 实际创建的是 Dog 对象

3️⃣ 匿名内部类方式(也算“间接实例化”)

Animal a = new Animal() {
    void eat() {
        System.out.println("吃东西");
    }
};

✅ 这是匿名子类对象,不是抽象类本身实例化。


4️⃣ 总结

情况 是否可以
new 抽象类() ❌ 不可以
通过子类 new 子类() ✅ 可以
匿名内部类 ✅ 可以(本质是子类)

如果你愿意,我也可以帮你对比 抽象类 vs 接口,或者讲 什么时候用抽象类。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手