服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 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指示符,但这样做没有任何意义。

扫描关注微信公众号