6.4.5 final方法
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
修饰的方法仅仅是不能被重写,并不是不能被重载。