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