📅  最后修改于: 2023-12-03 15:39:38.361000             🧑  作者: Mango
在Java中,final关键字可以用于类、方法和变量。它表示被修饰的类、方法或变量不可修改。
如果一个方法被修饰为final,那么它不能被子类覆盖或重写。但是,我们可以在Java中扩展final方法,只是不能覆盖或重写它。
public class BaseClass {
public final void finalMethod() {
// final method implementation
}
public void nonFinalMethod() {
// non-final method implementation
}
}
public class ExtendedClass extends BaseClass {
public void nonFinalMethod() {
// overriding non-final method from BaseClass
}
// attempting to override final method from BaseClass
// results in compile-time error
// public void finalMethod() {}
}
在上面的示例中,BaseClass定义了一个final方法finalMethod()和一个普通方法nonFinalMethod()。ExtendedClass扩展了BaseClass,并覆盖了nonFinalMethod()方法。但是,如果ExtendedClass尝试覆盖finalMethod()方法,编译会失败并产生错误。
因此,虽然不能覆盖或重写final方法,但可以扩展它们。
总的来说,final方法的目的是为了确保方法在程序中的执行不变。当类的设计者不希望某个方法被修改时,可以使用final关键字将其标记为final。在Java中,final方法可以被扩展,但不能被覆盖或重写。