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技术