乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      關(guān)于final方法

       鳳舞天煌 2007-11-12

      final方法是不能被覆蓋的方法,但可以被重載(即方法名相同而參數(shù)不同).
      另外有一個很容易被搞糊涂的地方是當方法是private final時.首先要知道的是:當一個方法被聲明為private時,該方法隱式的指定為final!說到這里,也許你就會有產(chǎn)生一個疑問,既然private被隱式地指定為fianl,那么為什么它可以被覆蓋?就象下面的程序為什么可以運行?

      class Father {
            private final void f() {     //即使這里你不顯示的加上final,它隱式的就是final
               System.out.println("Father.f()");
            }
      }

      public class Son extends Father {
            private final void f() {     //看上去象不象覆蓋??
               System.out.println("Son.f()");
            }
            void test() {
               f();
            }
        
          public static void main(String[] a) {
              new Son().test();
             
          }
        
      }    //本程序的輸出結(jié)果為: Son.f()    ???

             在闡明這個問題前,先來了解一下什么叫做覆蓋.
      “覆蓋”只有在某方法是基類接口的一部分時才發(fā)生。即,必須能將一個對象向上轉(zhuǎn)型為它的基類并調(diào)用相同的方法.如果一個方法是private的,它就不是基類接口的一部分,它只是隱藏在類里面的一些代碼罷了!

          正如我們剛才說的,private默認的是final,可見,private方法是不能被覆蓋。但是因為它可以以相同的名字存在于子類中,所以“看上去”它被“覆蓋”了。從子類來看,它根本不知道父類有這個方法(因為private的權(quán)限是定義它的類本身才能使用它,因此private方法就不能被帶到子類中),而父類也不知道子類有這個方法,它們是獨自存在于各自類的內(nèi)部的,與接口無關(guān)。所以,我們并沒有覆蓋private方法,只是創(chuàng)建了一個新的方法,而碰巧也有那個名字!

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多