在Java中,final方法是不能被子类重写的。这意味着如果你有一个超类(父类)中的方法被声明为final,那么任何试图继承该超类的子类都不能覆盖(重写)这个final方法。
然而,这并不意味着final方法不能被子类继承。子类会自动继承父类中的所有非私有成员,包括final方法。子类可以调用这些final方法,但不能修改它们的实现。
下面是一个简单的例子来说明这一点:
class SuperClass {
public final void finalMethod() {
System.out.println("This is a final method in the superclass.");
}
}
class SubClass extends SuperClass {
// 尝试重写父类的final方法会导致编译错误
// public void finalMethod() { // 编译错误:cannot override the final method from SuperClass
// System.out.println("Trying to override a final method.");
// }
public void callFinalMethod() {
// 子类可以调用继承自父类的final方法
super.finalMethod();
}
}
public class Main {
public static void main(String[] args) {
SubClass sub = new SubClass();
sub.callFinalMethod(); // 输出: This is a final method in the superclass.
}
}
在上面的例子中,SubClass继承了SuperClass,并且可以调用finalMethod(),但不能重写它。如果你取消注释SubClass中的finalMethod()方法定义,编译器会报错,提示你不能覆盖父类的final方法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。