java的final类
假如说整个类都是final(在它的界说前冠以final要害字),就表白本身不但愿从这个类担任,可能不答允其他任何人采纳这种操纵。换言之,出于这样或那样的原因,我们的类必定不需要举办任何改变;可能出于安详方面的来由,我们不但愿举办子类化(子类处理惩罚)。
除此以外,我们或者还思量到执行效率的问题,并想确保涉及这个类各工具的所有动作都要尽大概地有效。如下所示:
//: Jurassic.java // Making an entire class final class SmallBrain {} final class Dinosaur { int i = 7; int j = 1; SmallBrain x = new SmallBrain(); void f() {} } //! class Further extends Dinosaur {} // error: Cannot extend final class 'Dinosaur' 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指示符,但这样做没有任何意义。