leochiang

          BlogJava 聯系 聚合 管理
            21 Posts :: 0 Stories :: 1 Comments :: 0 Trackbacks
          作用域 
          當前類同一package子孫類 
          其他package
          public√    
          √    
          √    
          √    
          protected 
          √    
          √    
          √    
            ×  
          default√    
          √    
            ×  
            × 
          private√    
            ×  
            ×  
            ×  

          關于overload與override的區別:
             overload是重載,意思是我們可以定義一些名稱相同的方法,通過定義不同的輸入參數來區分這些方法,然后再調用時,VM就會根據不同的參數樣式,來選擇合適的方法執行。 方法重載支持多態性,因為它是Java 實現“一個接口,多個方法”范型的一種方式。要理解這一點,考慮下面這段話:在不支持方法重載的語言中,每個方法必須有一個惟一的名字。但是,你經常希望實現數據類型不同但本質上相同的方法。 
                  1)使用重載時必須使用不同的參數樣式
                  2)對于繼承來說,如果某一方法在父類中是訪問權限是private,那么就不能在子類對其進行重載,如果定義的話,也只是定義了一個新方法,而不會達到重載的效果。
              override是重寫(比如說對接口的重寫,繼承中子類重寫父類的方法)。
                  1)覆蓋的方法的標志必須要和被覆蓋的方法的標志完全匹配,才能達到覆蓋的效果;

                  2)覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;

                  3)覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子類;

                  4)被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,并沒有對其進行覆蓋。

          關于抽象類(abstract)   
                所有的對象都是通過類來描述的,然而,所有的類不一定是通過對象來描述清楚,因此不能描述的這些類定義為抽象類 。   
                抽象類與接口緊密相關。然接口又比抽象類更抽象,這主要體現在它們的差別上:1)類可以實現無限個接口,但僅能從一個抽象(或任何其他類型)類繼承,從抽象類派生的類仍可實現接口,從而得出接口是用來解決多重繼承問題的。2)抽象類當中可以存在非抽象的方法,可接口不能且它里面的方法只是一個聲名必須用public來修飾沒有具體實現的方法。3)抽象類中的成員變量可以被不同的修飾符來修飾,可接口中的成員變量默認的都是靜態常量(static final)。4)這一點也是最重要的一點本質的一點"抽象類是對象的抽象,然接口是一種行為規范"。 
                  package core_java;

          abstract class Ch{
              public abstract void doSome();
          }

          class A extends Ch{
              public void doSome(){
                  System.out.println("a");
              }
          }

          class B extends Ch{
              public void doSome(){
                  System.out.println("b");
              }
          }

          public class TestAbstract {

              /**
               * 
          @param args
               
          */
              public static void main(String[] args) {
                  // TODO Auto-generated method stub
                  Ch aa = new A();
                  Ch bb = new B();
                  
                  A aaa = new A();
                  B bbb = new B();
                  aa.doSome();
                  bb.doSome();
                  aaa.doSome();
                  bbb.doSome();
                  
                  doSomething(aa);
                  doSomething(bb);
                  doSomething(aaa);
                  doSomething(bbb);
              }
              
              public static void doSomething(Ch a){
                  a.doSome();
              }

          }
          posted on 2012-08-06 09:27 leoChiang 閱讀(276) 評論(0)  編輯  收藏 所屬分類: 技術文檔
          主站蜘蛛池模板: 于都县| 南郑县| 区。| 靖西县| 齐齐哈尔市| 乐陵市| 巴楚县| 邵武市| 兴仁县| 泸州市| 木里| 伊川县| 什邡市| 桃源县| 浠水县| 修武县| 曲阜市| 莱芜市| 平湖市| 阿克苏市| 韩城市| 驻马店市| 林口县| 建水县| 灵宝市| 沙田区| 镇平县| 彰化市| 红安县| 洪雅县| 鸡泽县| 尚志市| 鹤山市| 敦煌市| 万载县| 呈贡县| 长寿区| 改则县| 彝良县| 汉源县| 宣恩县|