中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java常見知識點匯總(③)——面向對象基礎

發布時間:2020-08-08 01:54:06 來源:ITPUB博客 閱讀:176 作者:無敵天驕 欄目:軟件技術

Java常見知識點匯總(③)——面向對象基礎

面向對象三要素:封裝、繼承、多態

①. 封裝:封裝的意義,在于明確標識出允許外部使用的所有成員函數和數據項,或者叫接口。

②. 繼承:

  • 繼承基類的方法,并做出自己的擴展;
  • 聲明某個子類兼容于某基類(或者說,接口上完全兼容于基類),外部調用者可無需關注其差別(內部機制會自動把請求派發dispatch到合適的邏輯)。

③. 多態:基于對象所屬類的不同,外部對同一個方法的調用,實際執行的邏輯不同。很顯然,多態實際上是依附于繼承的第二種含義的。

一. 多態

方法簽名:方法名 + 參數列表(參數類型、個數、順序)

1.1 重寫

子類重寫父類方法,只有實例方法可以被重寫,重寫后的方法必須仍為實例方法。成員變量和靜態方法都不能被重寫,只能被隱藏。

重寫實例方法:超類Parent中有實例方法A,子類child定義了與A 相同簽名和子集返回類型 的實例方法B,子類對象ChildObj只能調用自己的實例方法B。

方法的重寫(override)兩同兩小一大原則:

  • 方法名相同,參數類型相同
  • 子類返回類型小于等于父類方法返回類型
  • 子類拋出異常小于等于父類方法拋出異常
  • 子類訪問權限大于等于父類方法訪問權限

注意:

  • 不能重寫static靜態方法。(形式上可以寫,但本質上不是重寫,屬于下面要講的隱藏)
  • 重寫方法可以改變它的方法修飾符,如final,synchronized,native。不管被重寫方法中有無final修飾的參數,重寫方法都可以增加、保留、去掉這個參數的 final 修飾符(參數修飾符不屬于方法簽名)。

1.2 重載

在同一個類中,有多個方法名相同,參數列表不同(參數個數不同,參數類型不同),與方法的返回值無關,與權限修飾符無關。編譯器通過對方法簽名的識別即可靜態編譯出不同的方法。這也是java中重載與重寫的區別之一。

重載只是一種語言特性,與多態無關,與面向對象也無關。多態是為了實現接口重用。

Java中方法是可以和類名同名的,和構造方法唯一的區別就是,構造方法沒有返回值。

1.3 隱藏

隱藏與覆蓋在形式上極其類似(語法規則),但有著本質的區別:只有成員變量(不管是不是靜態)和靜態方法可以被隱藏。

1.4 成員變量

超類 Parent 中有成員變量 A ,子類 Child 定義了與 A 同名的成員變量 B ,子類對象 ChildObj 調用的是自己的成員變量 B。如果把子類對象 ChildObj 轉換為超類對象 ParentObj ,ParentObj 調用的是超類的成員變量 A !

  • 隱藏成員變量時,只要同名即可,可以更改變量類型(無論基本類型還是隱藏類型)
  • 不能隱藏超類中的 private 成員變量,換句話說,只能隱藏可以訪問的成員變量。
  • 隱藏超類成員變量 A 時,可以降低或提高子類成員變量B的訪問權限,只要A不是 private。
  • 隱藏成員變量與是否靜態無關!靜態變量可以隱藏實例變量,實例變量也可以隱藏靜態變量。
  • 可以隱藏超類中的final成員變量。

1.5 靜態方法

超類 Parent 有靜態方法 A ,子類 Child 定義了與 A 相同簽名和子集返回類型 的靜態方法 B ,子類對象 ChildObj 調用的是自己的靜態方法 B 。如果把子類對象 ChildObj 轉換為超類對象 ParentObj ,ParentObj 調用的是超類的靜態方法 A !

隱藏后的方法必須仍為靜態方法

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汨罗市| 永宁县| 荔浦县| 汉寿县| 逊克县| 呈贡县| 姜堰市| 旬邑县| 太原市| 郑州市| 大理市| 灵寿县| 马鞍山市| 日土县| 广昌县| 鲁山县| 凤凰县| 三门县| 乐清市| 湘乡市| 普兰县| 鹤庆县| 武威市| 佛山市| 肇州县| 内丘县| 会理县| 安福县| 江城| 永丰县| 中宁县| 郓城县| 巴里| 增城市| 东乌| 仁布县| 永和县| 横峰县| 旅游| 牡丹江市| 莒南县|