6.4.5 final方法
final
修饰的方法不可被重写,如果出于某些原因,不希望子类重写父类的某个方法,则可以使用final
修饰该方法。
Object类中的final方法
Java
提供的Object
类里就有一个final
方法:getClass()
,因为Java
不希望任何类重写这个getClass
方法,所以使用final
把这个方法密封起来。
但对于该类提供的toString
和equals
方法,都允许子类重写,因此没有使用final
修饰它们。
注意final修饰private方法的情况
private方法子类不可见无法重写
对于一个private
方法,因为它仅在当前类中可见,其子类无法访问该方法,所以子类无法重写private
方法
子类定义相同的private方法也不算重写
如果子类中定义一个与父类private
方法有相同方法名
、相同形参列表
、相同返回值类型
的方法,也不是方法重写,只是重新定义了一个新方法。
子类可以定义与父类同名的final修饰的private方法
因此,即使使用final
修饰一个private
访问权限的方法,依然可以在其子类中定义与该方法具有相同方法名
、相同形参列表
、相同返回值类型
的方法。
final
修饰的方法可以被重载
final
修饰的方法仅仅是不能被重写,并不是不能被重载。
原文链接: 6.4.5 final方法