final类:
如果一个类被声明为final,意味着它不能再派生新的子类,因此一个类不能同时既被声明为abstract,又被声明为final。
final函数:
如果一个函数被声明为final,意味着它不能再被子类覆写,但可以在覆写一个父类函数时将这个函数声明为final。若一个 final 函数不是覆写父类的函数,则意味着编译时就可确定被调用的函数是哪一个函数,这样可以提高运行效率。设计final函数时,可考虑两点:第一,子类需要访问这个函数、但不能让子类覆写这个函数;第二,在第一点的基础上,函数的性能非常重要,在多数情况下,这点比较次要一些。
final参数:
类似于final变量,只能引用,不能修改。final 参数仅需声明,不必显式赋值(赋值是通过函数调用传参数完成的)这点和final变量不太一样。final参数,如果是基本数值类型, 那么在函数中不能被改变,如果是引用,那么该引用不能被改变,否则编译错误。
如果一个类被声明为final,意味着它不能再派生新的子类,因此一个类不能同时既被声明为abstract,又被声明为final。
final函数:
如果一个函数被声明为final,意味着它不能再被子类覆写,但可以在覆写一个父类函数时将这个函数声明为final。若一个 final 函数不是覆写父类的函数,则意味着编译时就可确定被调用的函数是哪一个函数,这样可以提高运行效率。设计final函数时,可考虑两点:第一,子类需要访问这个函数、但不能让子类覆写这个函数;第二,在第一点的基础上,函数的性能非常重要,在多数情况下,这点比较次要一些。
final参数:
类似于final变量,只能引用,不能修改。final 参数仅需声明,不必显式赋值(赋值是通过函数调用传参数完成的)这点和final变量不太一样。final参数,如果是基本数值类型, 那么在函数中不能被改变,如果是引用,那么该引用不能被改变,否则编译错误。