JAVA允许你扩展一个类<超类>派生另一个类<子类>,当子类扩展父类时,该子类可以超越其父类的方法,在有些情况下,你可能想阻止子类超越一个指定的方法,当你把一个类方法申明为final时,另一个类就不能超越这个方法。为了把方法申明成final方法,只需在该方法头前加final 关键字即可。

解决方案 »

  1.   

    补充一点,这个问题还是要涉及到namespace(叫scope更加确切一点)的问题。我现在举一个例子:
    class base{
    private final void disp(){}
    }
    class dervied extends base{
    private final void disp(){}
    }
    这个例子中,这样写就没有任何问题的。这个例子如何解释呢:
    (1)variable and method都是有生存空间的,同时也存在在子空间可见不可见的问题。
    (比如这里的base和dervied)
    (2)要是在同一生存空间不可见的话,前面所说不能超越的说法就不成立的。
    比如我举的这个例子。
    (3)因为base的 disp()在dervied中是不可见的。
      

  2.   

    我查的资料,这属于概念的问题,找两本JAVA基础的书上都会有讲到
      

  3.   

    是的,被声明为final的方法是不允许被覆盖,即被子类或其他覆盖(overlaod)
      

  4.   

    private 的根本没有覆盖的问题