final是java中的一个关键字,可以用来修饰变量、方法和类。用关键词final修饰的域成为最终域。用关键词final修饰的变量一旦赋值,就不能改变,也称为修饰的标识为常量。如果一个类的域被关键字final所修饰,它的取值在程序的整个执行过程中将不会改变。


假如说整个类都是final,就表明自己不希望从这个类继承,或者不答应其他任何人采取这种操作。换言之,出于这样或那样的原因,我们的类肯定不需要进行任何改变;或者出于安全方面的理由,我们不希望进行子类化(子类处理)。


除此以外,我们或许还考虑到执行效率的问题,并想确保涉及这个类各对象的所有行动都要尽可能地有效。


class SmallBrain {} 

final class Dinosaur 

{ 

int i = 3; 

int j = 4; 

SmallBrain x = new SmallBrain(); 

void f() {} 

} 

public class Jurassic 

{ 

public static void main(String[] args) 

{ 

Dinosaur n = new Dinosaur(); 

n.f(); 

n.i = 40; 

n.j++; 

} 

}

注意数据成员既可以是final,也可以不是,取决于我们具体选择。应用于final的规则同样适用于数据成员,无论类是否被定义成final。将类定义成final后,结果只是禁止被继承——没有更多的限制。然而,由于它禁止被继承,所以一个final类中的所有方法都默认为final。因为此时再也无法覆盖它们。所以这与我们将一个方法明确声明为final一样。


可为final类内的一个方法添加final指示符,但这样做没有任何意义。