抽象类不能用final修饰,因为abstract要求必须被继承,而final禁止继承,二者语义冲突,编译器会报错。

不能。在 Java 中,抽象类不能使用 final 修饰。
为什么抽象类不能是 final?
因为 abstract 和 final 的语义是矛盾的:
- abstract 类:表示这个类是不完整的,必须被子类继承并实现其抽象方法。
 - final 类:表示这个类不能被继承,防止其他类扩展它。
 
如果一个类既是 abstract 又是 final,那就意味着它既要求被继承,又禁止被继承,这在逻辑上是冲突的。
编译器会报错
如果你尝试这样写:
立即学习“Java免费学习笔记(深入)”;
                   public final abstract class MyAbstractClass {
    // …
}  
Java 编译器会直接报错,提示:
illegal combination of modifiers: abstract and final
总结
记住一点:abstract 强调必须被继承,final 强调不能被继承,两者互斥。所以 Java 不允许抽象类使用 final 修饰。
基本上就这些。