龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

final类

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
假如说整个类都是final(在它的定义前冠以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指示符,但这样做没有任何意义。
  
精彩图集

赞助商链接