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
          主站蜘蛛池模板: 靖西县| 五常市| 红河县| 桦川县| 塔河县| 色达县| 麦盖提县| 建德市| 竹北市| 桦川县| 蚌埠市| 政和县| 黄冈市| 婺源县| 吉安县| 双鸭山市| 永康市| 曲阜市| 禹城市| 涟水县| 阿瓦提县| 太仓市| 敦煌市| 尼木县| 南安市| 富蕴县| 兴宁市| 沽源县| 离岛区| 桐柏县| 刚察县| 阳谷县| 克拉玛依市| 吴桥县| 蓝山县| 陆川县| 西畴县| 青铜峡市| 泗水县| 新郑市| 龙门县|