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
未來刀客 閱讀(999)
評論(0) 編輯 收藏 所屬分類:
Java技術