Java中final关键字用在以下三种情况:
1、声明常量
2、将某个方法声明为final
3、将某个类声明为final
第一种情况很简单,而且它经常配合static使用,因为既然是常量,则对于所有实例都是
一样的,它不随着实例而变化,所以将其声明为static。但有一点需要注意,即当声明了
一个final的object reference时,注意,这时谁为常量?是reference本身还是referenc
e指向的对象?答案是前者,例:
public class Circle
{
private double rad;
public Circle(double r)
{
  rad = r;
}
public void setRadius(double r)
{
  rad = r;
}
public double getRadius()
{
  return rad;
}
          public static void main(String[] args)
          {
                    private static final Circle p = new Circle(5);
                    p.setRadius(7);           //OK,因为p为常量,但它所引用的

                                              //对象不是常量
                    p = new Circle(7);        //Error,改变了常量p的值
}


由于缺省情况下,classes所有的non-private,non-static函数都可以被子类所复写(over
ride),那么如何做才能阻止子类复写某个函数呢?答案是将该方法声明为final。例:

public class Base
{
public void foo()
{
 
}
public final void bar()
{
 
}
}
public class Derived extends Base
{
public void foo()
{
 
}
/**
  * can't override the final method of base class
  */
// public void bar()
// {
// 
// }
}


那么关于final class,我想大家都可以猜出来了,对,它的目的就是防止它派生出子类,
其实,它的作用等价于将该class里面的所有方法都声明为final了。《完》
posted on 2005-12-30 16:15 未来刀客 阅读(995) 评论(0)  编辑  收藏 所属分类: Java技术

只有注册用户登录后才能发表评论。


网站导航: