一、final变量
final关键字可以用于变量的声明,一旦变量被设定,就不可以再改变该变量的值,由final定义的变量为常量。
final除了修饰基本数据类型,还可以修饰对象引用,所以final可以用来修饰数组。final修饰了数组,无法将其改变以指向另一个对象。
注:① 被final定义的常量在定义时需要使用大写字母定义,并且中间使用下划线进行连接(缺一不可)。
② 定义为fianl的常量不是恒定不变的,只有static final 形式,在内存中才会开辟一块恒定不变的区域。
二、final 方法
定义为final的方法是不可以被重写的。
将方法定义为final类型可以防止子类修改该类的定义与实现方式,同时,定义为final的方法的效率要高于非final方法。
如果在父类中定义了一个private final 的doit()方法,同时在子类中定义了一个doit()方法,表面上来看,子类中的doit()方法覆盖了父类中的doit()方法。
但是,覆盖必须满足:一个对象的向上转型为他的基本类型并调用相同方法。
三、final类
看完final变量和final方法的介绍,想必大家都能猜到final类了吧。
没有错,相信你自己,你就是对的,定义为final的类是不能被继承的。
如果你想要一个类不允许任何一个类继承,并且不允许其他人对这个类进行任何改动,可以将这个类设置为final形式。
但是在设置时你需要注意的是,final类中的所有方法都会被隐式的设置为final形式的哦,但是final中的成员变量则是任意的。
总结:final定义的一切东西,只有在特定情况下才允许被操作,否则就是不可侵犯的。