面向對象三大特性:封裝,繼承,多態(一,封裝和繼承)


封裝、繼承和多態是面向對象程序設計的三個核心特性。

  1. 封裝是面向對象技術中的一個重要概念,是一種信息隱藏技術,它體現了面向對象程序設計的思想。
  2. 繼承是面向對象程序設計方法的一個重要手段,通過繼承可以更有效地組織程序結構,明確類間的關系,育雛利用已有的類來完成更復雜、更深入的程序開發。
  3. 多態允許以一種統一的風格處理已存在的變量和相關的類,多態性使得向系統增加功能變的容易。

一、封裝

  1.   封裝的含義是:類的設計者把類設計成一個黑匣子,使用者只能看見類中定義的公共變量和公共方法,而看不見方法的具體實現細節,也不能對類中非公共的數據進行操作。這樣可以防止外部的干擾和誤用。
  2.   封裝的目的:在於將對象的使用者和對象的設計者分開,使用者不必知道行為實現的細節,只須用設計者提供的接口來訪問對象。同時減少了程序各部分之間的依賴性,降低了程序的復雜性,由於隱藏了其內部信息的細節,使內部信息不易受到破壞,安全性有了保證,同時也為外界訪問提供了簡單方便的界面。
  3.   封裝的實現:JAVA定義了4種訪問權限:public (公有的)、protected(保護的)、private(私有的)和默認的(默認的就是包訪問權限package)

    3.1 public (公有的)

    用public修飾的類成員(包括變量和方法)稱為公有的,公有成員允許JAVA系統中所有的類訪問,即不公類內部的成員可以訪問,類外部的同一個包或者不同包的類也可以直接訪問。

    3.2  private(私有的)

    用private修飾的類成員稱為私有的,類的私有成員只能被這個類的方法直接訪問。如果想要獲取一個類中私有變量的值,可以通過類中定義的get()方法來獲取。一般把不需要外界知道的數據聲明為私有,這樣有利於數據的安全性,也符合程序設計中隱藏內部信息處理細節的原則。

    3.3 protected(被保護的)

    用protected修飾的類成員為被保護的,允許其所歸屬的類(父類)、由此派生的類(子類)以及同一個包中的其他類訪問。

    3.4 默認的(package)

    如果類成員前面沒有任何關鍵字修飾,則稱為默認的。默認的類成員除了允許被其歸屬的類訪問外,還允許同一個包中的其他類訪問。若兩個類不在同一個包中,即使是這個類的子類,也不允許訪問。

  


 

二、繼承 

  繼承是一種由已有類創建新類的機制。利用繼承,我們可以先創建一個共有屬性的一般類,根據該一般類再創建具有特殊屬性的新類。新類繼承一般類的狀態和行為,並根據需要增加它自己的狀態和行為。

  從現有類出發定義一個新類,稱為新類繼承了現有的類,其中被繼承的現有類叫做超類(superclass)或父類,由繼承而得到的類稱為子類(subclass)。

  Java中規定,一個父類可以同時擁有多個子類,但一個子類只能有一個父類,即單重繼承,而且允許多層繼承,即子類還可以有它自己的子類,在下一層的繼承關系中原先的子類就變成了父類。這樣的繼承關系就形成了繼承樹。

1、類繼承用關鍵字extends實現,格式為:

class 子類名extends 父類名{子類的類體}

如果沒有extends子句,則這個類直接繼承Object。

  2、成員變量的繼承

  子類繼承父類中所有可被子類訪問的成員變量。繼承原則如下:

2.1    能夠繼承那些聲明為public和protected的成員變量。

2.2    能夠繼承同一包中的那些默認修飾符的成員變量。

2.3    不能繼承那些聲明為private的成員變量。

2.4    如果子類聲明一個與父類成員變量同名的成員變量,則不能繼承父類的成員變量。此時子類的成員變量稱做隱藏了父類的成員變量。

  總之,子類可繼承父類的public、protected和默認修飾變量,不能繼承private變量。反之,如果父類不允許其子類訪問它的某些成員,那么它必須以private方式聲明該成員。這一點充分體現了類封裝的信息隱蔽原則。

3、成員方法的繼承

  

  子類繼承成員方法的規則類似於繼承成員變量的規則:子類繼承父類中所有可被子類訪問的成員方法。繼承規則如下:

3.1    能夠繼承那些聲明為public和protected的成員方法。

3.2    能夠繼承同一包中的默認修飾符的成員方法。

3.3    不能繼承那些聲明為private的成員方法。

3.4    不能繼承父類的構造方法。

  如果子類方法與父類方法同名,則不能繼承。子類方法稱為覆蓋了父類中的那個方    法。

  總之,子類可繼承其父類的public、protected和默認修飾方法,不能繼承private方法。子類除了可以繼承父類中的變量及方法,還可以增加自己的成員。當一個父類成員不適合該子類時,子類會重新定義它,如果是重新定義的是成員變量就是隱藏父類的變量,如果是成員方法就是覆蓋父類的方法。

  4、重寫  

  重寫是指在繼承過程中,子類中的成員(包括數據和方法)與其父類中的成員同名,但功能不同,此時,子類的成員“覆蓋”從父類繼承過來的成員。包括兩種情況:一是數據覆蓋,稱為數據隱藏,即父、子類中數據成員的名稱相同,類型不同,它們實際上是完全不同的兩個數據;二是方法覆蓋,稱為方法重寫,即父、子類中方法的名稱相同,參數表也完全相同,但功能不同。

    在數據隱藏和方法覆蓋后,子類成員覆蓋了父類的同名成員,要訪問父類的這些成員,需用super關鍵字來引用當前類的父類。super的用法有3種情況:

    4.1  super.變量名:訪問父類中被隱藏的成員變量。

    4.2  super.方法名([參數表]):調用父類中被重寫的方法。

    4.3  super([參數表]):調用父類的構造方法,此時,可用super來表示父類的構造方法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM