java基礎學習筆記-繼承

來源:互聯網
上載者:User

標籤:

  繼承是複用程式碼的有力手段,當多個類(Sub1,Sub2,...Sub100)之間存在相同的屬性和方法時,可從這些類中抽象出父類Base。在父類Base中定義這些相同的屬性和方法,所有的Sub類無須重新定義這些屬性和方法,而只需要通過extends語句來聲明繼承Base類:

                    public class Sub extends Base {...}

  Sub 類就會自動擁有在Base類中定義的屬性和方法。

6.1 繼承的基本文法

  在JAVA語言中,用extends 關鍵字來表示一個類繼承了另一個類,例如:

                public class sub extends Base{                                  ...                 }            

   以上代碼錶明Sub類繼承了Base類。那麼類到底繼承了Base類的哪些東西呢?這需要分為以下兩種情況。

  •    當 Sub類和Base類位於同一個包中:Sub類繼承Base類中public、protected和預設存取層級的成員變數和成員方法。
  •    當 Sub類和Base類位於不同的包中:Sub類繼承Base類中public和protected存取層級的成員變數和成員方法。

   假定Sub和Base類位於同一個包中,以下程式示範在Sub類中可繼承Base類的哪些成員變數和方法。

        public   class Base {                 public int publicVarOfBase=1;           //public 存取層級                      private int privateVarOfBase=1;    //public 存取層級                      int defaultVarOfBase=1;            //預設存取層級                 protected void methodOfBase() {}        //protected 存取層級            }              public class Sub extends Base{                 public void methodOfBase(){                      publicVarOfBase=2;    //合法,可以訪問Base類的public類型的變數                      defaultVarOfBase=2;   //合法,可以Base類的預設存取層級的變數                      privateVarOfBase=2;   //非法,不能訪問Base類的private類型的變數                      methodOfBase();       //合法,可以訪問Base類的protected類型的方法       }        public static void mian (String args[]){                      Sub sub=new Sub();                      Sub.publicVarOfBase=3;    //合法,Sub類繼承了Base類的public類型的變數                      Sub.privateVarOfBase=3;   //非法,Sub類不能繼承Base類的private類型的變數                      Sub.defaultVarOfBase=3;    //合法,Sub類繼承了Base類的預設存取層級的變數                      Sub.methodOfBase();       //合法,Sub類繼承了Base類的protected類型的方法                      Sub.methodOfSub();       //合法,這是Sub類本身的執行個體方法      } }

      Java語言不支援多繼承,即一個類只能直接繼承一個類。例如以下代碼會導致編譯錯誤。

          class Sub extends Base1,Base2,Base3(...)

       儘管一個類只能一個直接父類,但是它可以有多個間接的父類,例如以下代碼錶明Base1 類繼承Base2類,Sub類繼承Base1類,Base2類是Sub類的間接父類。

                class Base1 extends Base2{...}                class Sub extends Base1{...}

      所以的Java 類都直接或間接地繼承了java.lang.Object 類。

6.2    方法重載(Overload)

    對於類的方法(包括從父類中繼承的方法),如果有兩個方法的方法名相同,但參數不一致,那麼可以說,一個方法是另一個的重載方法。

    重載方法必須滿足以下條件:

  •     方法名相同。
  •       方法的參數類型、人數、順序至少有一項不相同。
  •   方法的傳回型別可以不相同。
  •   方法的修飾符可以不相同。

    在一個類中不允許定義兩個方法名相同,並且參數簽名也完全相同的方法。因為假如存在這樣的兩個方法,Java虛擬機器在運行時就無法決定到底執行哪個方法。參數簽名是指參數的類型、個數和順序。

java基礎學習筆記-繼承

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.