如图中红框,这两个成员变量用final关键词修饰后有什么作用和意义?百度查了说final修饰的变量不能被修改,final修饰的变量必须显示初始化。
实在是搞不懂不能修改和必须显示初始化到底有什么好处,求教大牛解答,万分感谢!
final主要是为了避免派生和在派生类中被修改/重写
体现了面向对象三原则中的封装
原则。(另外两个原则是继承和多态)
比如说String类,就是一个final类,为什么要final?或者不允许继承,因为这样一来,String这个类的设计者(Oracle公司的程序员,或者Sun的程序员),就可以放开手对它的内存组织、代码算法做优化。
如果允许继承,那么需要考虑的问题就很多了。而且引入很多复杂的兼容问题。
你可以类比,为什么一个类的成员要定义为private,这同样体现了封装
原则。因为你不希望调用者绕过你的接口(公开的方法)直接修改类的状态。
一样的道理,final阻止了调用者在派生类的自定义行为。
个人理解,final一般会跟static搭配使用,用来定义静态常量,final定义的常量是不允许被修改,保证了需要这个参数的方法永远传递的都是初始化的值,而不是可能被其他方法修改过的值,比如mysql连接端口号3306,http状态码(成功:200)、序列化serialVersionUID等等