final方法不允许被子类重写
抽象方法必须被子类重写
java采用了什么策略来防止abstract和final同时被使用?它是这样的:abstract修改一个类来表示它是一个抽象类。抽象类的特点是,如果一个类是抽象类,那么它可能不包含抽象方法,而是包含所有具体方法。相反,如果类包含抽象方法,则该类必须是抽象的。对于一个抽象类,无论它是否都是具体的方法,java都规定它不能被实例化,它的对象不能被新方法生成。我们必须通过一个子类继承它来完成抽象类的功能。抽象类的功能是通过实例化其子类来实现的。final修改类时,意味着类不能被继承。这是最后一节课。所以absact和final是矛盾的。
不可能在一个类上同时使用两个修饰符。因为抽象不能实例化(没有构造方法),所以它需要子类来实现,final是final。当修改一个类时,意味着它不能被继承,并且没有子类。这两者是矛盾的。但是,final关键字可以存在于抽象类中,前提是final修改的方法已在抽象类中实现,其功能是继承其子类,并且不能重写此方法。看。。。谢谢
这两个是不允许的。这两个目的不一样,定义的方法也不一样。因此,它们不能同时使用,但可以在不同的类中使用。
这意味着,最终使它不可能被继承,抽象使它不可能是新的。那么什么是不能继承或新的呢?你说得对。文本对象,如int、float、double。例如,如果定义了最终的抽象类person,则person可以用作类型参数,但不能是新的。与直接写入的literal不同,该类型没有实例。传统上,它被称为幻影类型。这比枚举好。在某些语言中,枚举必须手动检查类型,但编译器会自动为您检查类型。
final-修饰符(关键字)如果类被声明为final,则意味着它不能再派生新的子类或作为父类继承。因此,类不能同时声明为抽象的和最终的。将变量或方法声明为final可以确保它们在使用中不会更改。声明为final的变量必须用初始值声明,该初始值只能在将来的引用中读取,不能修改。声明为final的方法只能使用,不能重载。finalize—方法名称。java技术允许您使用finalize()方法在垃圾收集器清除内存中的对象之前进行必要的清理。当确定对象未被引用时,垃圾收集器将调用此方法。它是在对象类中定义的,因此所有类都继承它。子类重写finalize()方法来组织系统资源或执行其他清理。finalize()方法在对象被垃圾收集器删除之前被调用。
与普通类相比,抽象类可以有抽象方法或非抽象方法。抽象方法只能声明,不能实现,不允许用final和abstract同时修改方法。抽象类不能用new操作符创建对象:如果非抽象类是抽象类的子类,它必须重写父类的抽象方法并给出方法体。也就是说,必须在子类中重新声明抽象方法,但必须删除抽象修改。同时,方法名、返回类型、参数个数和声明的类型必须与父类的抽象方法完全一致。这就是为什么不允许同时使用final和abstract修改方法。