java的final是一个非常灵活的存在,它可以在三个地方使用:类、变量、方法。
类:
final用在类上面的话相当于C#中的sealed的用法。就是避免其他类的继承。
变量:
当final用在变量上面的时候相当于C#的const修饰符,就是说,当final修饰的是一个值类型的话,这个值类型的值就不能改变了,修饰的是一个引用类型的话,这个变量就不能再引用其他对象了。
方法:
当final修饰方法的时候,如果存在继承的关系,那么被final修饰的方法则不能在子类中被覆盖。这一点和C#的virtual和override很相似,但是C#中的方法默认情况下是不virtual的。java的方法默认是virtual的。