Jafe Lee

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            49 隨筆 :: 0 文章 :: 24 評論 :: 0 Trackbacks
          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(5)

          隨筆分類(50)

          隨筆檔案(46)

          文章分類

          搜索

          最新評論

          評論排行榜

          1、關鍵字super有兩個用途:一是調用超類的方法,而是調用超類的構造器。
          super不是對一個對象的引用,不能將super賦給另一個對象變量,它只是一個指示編譯器調用超類方法的特有關鍵字。super在構造器中的作用:
            public ?Manager(String?n,? double ?s,? int ?year,? int ?month,? int ?day)????
            {??????
            ??
            super (n,?s,?year,?month,?day);????
            ??bonus?
            = ? 0 ;????
            }????

          由于構造器不能范圍Employee類的私有域(具體例子見本文最后面PersonTest.java),所以必須利用Employee類的構造器對這部分私有域進行初始化 ,我們可以通過super實現對超類構造器的調用。使用super調用構造器的語句必須是 類構造器的第一條語句。如果之類的構造器沒有顯示的調用超類的構造器,這將自動調用超類默認(沒有參數)的構造器。如果超類沒有不帶參數的構造器,并且在子類的構造器中沒有顯示地調用超類的其它構造器,則Java編譯器將報告錯誤,這個規則對與abstract base class 也是成立的。

          2、關鍵字this有兩個用途:一是引用隱式參數,二是調用該類的其它的構造器。在調用構造器時和super很相似,都只能作為另一個構造器的第一條語句出現。

          3、多態。先看例子:
          Manager?boss?=?new?Manager();
          Employee?[]?staff?
          =?new?Employee[3];
          staff[
          0]?=?boss;
          在這個例子中,變量staff[0]和boss引用同一個對象.但編譯器將staff[0]看待成Employee對象.這意味著可以這樣調用:
          boss.setBonus(5000);
          但不能這樣調用
          staff[0].setBonus(5000);//error,這樣會引起一個編譯錯誤
          這是因為staff[0]聲明的類型是Employee,而setBonus不是Empoyee類的方法。

          4、動態綁定:
          • 方法的名字和參數列表被稱為方法的簽名(signature).如果在子類中定義了一個與超類簽名相同的方法,那么子類中的這個方法就覆蓋了超類中的這個同簽名的方法。但是,返回類型不是簽名的一部分,因此在覆蓋方法的時候,一定要保證返回類型的兼容性。在JDK 5.0以前的版本中,要求返回類型必須是一樣的。而現在允許子類將覆蓋方法返回類型定義為原返回類型的子類型。例如,假設Employee類有:
            public?Employee?getBuddy(){}
            在后面的子類Manager中,可以按照如下所示的方法覆蓋這個方法:
            public?Manager?getBuddy(){}?//OK?in?JDK?5.0
          • 如果方法是private, static, final或者是構造器,那么編譯器將可以準確地知道應該調用那個方法。我們將這種調用方式稱為靜態綁定。但是,子類不能繼承父類private (方法,更談不上覆蓋)不能覆蓋final修飾的方法,但可一覆蓋static方法
          • 覆蓋一個方法的時候,子類方法不能低于超類方法的可見性。特別是如果超類得方法是public,那么子類方法一定要聲明為public。
          posted on 2007-07-22 16:40 Jafe Lee 閱讀(735) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 醴陵市| 本溪| 吉木乃县| 茶陵县| 原阳县| 盘山县| 临高县| 元氏县| 乐清市| 昂仁县| 交城县| 烟台市| 珠海市| 西畴县| 屏山县| 三河市| 大化| 冀州市| 陇西县| 阿图什市| 丽江市| 西华县| 淄博市| 容城县| 化州市| 云和县| 潞西市| 登封市| 呼和浩特市| 通辽市| 株洲市| 勐海县| 穆棱市| 赤壁市| 昂仁县| 廊坊市| 鄂尔多斯市| 防城港市| 安多县| 华池县| 酉阳|