在 Java 中,抽象类(abstract class)本身不能直接实例化。
new 抽象类()abstract class Animal {
abstract void eat();
}
// 错误写法
Animal a = new Animal(); // ❌ 编译错误
抽象类 必须被继承,由子类实现抽象方法后才能创建对象。
class Dog extends Animal {
void eat() {
System.out.println("狗吃骨头");
}
}
Animal a = new Dog(); // ✅ 正确(多态)
这里:
Animal 是抽象类Dog 是具体子类Animal a = new Animal() {
void eat() {
System.out.println("吃东西");
}
};
✅ 这是匿名子类对象,不是抽象类本身实例化。
| 情况 | 是否可以 |
|---|---|
new 抽象类() |
❌ 不可以 |
通过子类 new 子类() |
✅ 可以 |
| 匿名内部类 | ✅ 可以(本质是子类) |
如果你愿意,我也可以帮你对比 抽象类 vs 接口,或者讲 什么时候用抽象类。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。