<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 抽象類與接口 ### 抽象類是啥~ 官方:抽象類往往用來表征對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。 > 官方的解釋果然抽象~ 民間: 在面向對象的概念中,世間萬物通過類來描繪的,但如果一個類中沒有包含足夠的信息來描繪一個具體的事物對象,這樣的類就是抽象類。 ***** 場景:比如說,我們熟悉的中華田園犬、泰迪、二哈等等大小形態各有不同,我們怎么把他們抽象一下呢?那就是他們都有一些本質上相同的東西那就是他們都是狗,是狗就有耳朵,尾巴,四肢等等,我們把這些特征給抽象出來就可以形成一個抽象類,至于耳朵是啥樣的,尾巴是長是短,顏色是啥,這就需要具體的子類實現狗這個抽象方法了。 <i></i> 這就是面向對象的基本特性:抽象~ 也是比較難的能力~ ### 那抽象類的作用呢~ 1. 用于**隱藏** > 對類型進行隱藏,我們可以構造出一組固定行為的抽象描述,一個行為可以有任意個可能的具體實現方式。這個抽象的描述就是抽象類。(參考多態) 2. 用于**拓展**對象的行為功能 > 因為抽象相對穩定,讓其他類(模板)依賴于固定的抽象;同時通過這個抽象類進行派生,派生出任意個可能的具體實現,拓展此模塊的行為功能。(參考開放閉合原則) ### 接口是啥~ 官方:接口泛指實體把自己提供給外界的一種抽象化物(可以為另一實體),用以由內部操作分離出外部溝通方法,使其能被內部修改而不影響外界其他實體與其交互的方式。 > 呵呵呵~ 民間: 接口就是一種特殊的abstract class,但是比abstract class更加抽象。 ***** 場景:很多時候,我們實際上關心的,并不是對象的類型,而是對象的**能力**, 譬如要拍個照片,很多時候,只要能拍出符合需求的照片就行,至于是用手機拍,還是用Pad拍,或者是用單反相機拍,并不重要,關心的是對象是否有拍出照片的能力,而并不關心對象到底是什么類型,手機、Pad或單反相機都可以。 **類型并不重要,重要的是能力**。 ### 那抽接口的作用呢~ 1. 由于Java單繼承的原因,接口作為繼承關系的一個補充(多繼承)完成了曲線救國。 2. 把程序模塊進行固化的契約,降低偶合。把若干功能拆分出來,按照契約來進行實現和依賴。(依賴倒置原則) 3. 定義接口有利于代碼的規范。(接口分離原則) 來張對比圖 ![](https://img.kancloud.cn/4e/f2/4ef2bc8ed77a53ec89b141140d34f7f9_1930x688.png) ### 內部類 定義 >把類定義在另一個類的內部,該類就被稱為內部類。 訪問規則 * 擁有外部類的引用,可以直接訪問外部類的成員,包括私有。 * 外部類要想訪問內部類成員,必須創建對象。 分類: - 成員內部類 - 局部內部類 - 靜態內部類 - 匿名內部類 好處: - 封裝性(高內聚,低耦合) > 內部類可以很好的實現隱藏,隱藏你不想讓別人知道的操作,也即封裝性。平時我們對類的訪問權限,都是通過類前面的訪問修飾符來限制的,一般的非內部類,是不允許有`private`與`protected`權限的,但內部類可以,所以我們可以通過內部類來隱藏我們的信息,實現更好的封裝。 - 實現多繼承 >使用接口實現多繼承的時候,是有一點弊端的,那就是,一旦實現一個接口就必須實現里面的所有方法,有時候就會出現一些累贅,但是使用內部類可以很好的解決這些問題。 - 匿名內部類實現回調功能 > 回調就是某個方法一旦獲得了內部類對象的引用之后,就可以在合適的時候反過來去調用外部類實例的方法,也即允許客戶類通過內部類引用調用外部類的方法。這種功能非常的靈活。 - 解決繼承及實現接口出現的同名方法的問題 > 一個類需要實現一個接口,還需要繼承一個類,但是要實現的這個接口和要繼承的類中有個一模一樣的方法,就可以建一個內部類實現這個接口。 ### 結語 抽象類,相對于具體類,它用于表達抽象概念,雖然從語法上,抽象類不是必須的,但它能使程序更為清晰,減少誤用,抽象類、接口、抽象類經常相互配合,接口定義能力,而抽象類提供默認實現,方便子類實現接口。 ***** ### 引用與參考 [https://blog.csdn.net/aptentity/article/details/68942916](https://blog.csdn.net/aptentity/article/details/68942916) [https://www.cnblogs.com/swiftma/p/5594961.html](https://www.cnblogs.com/swiftma/p/5594961.html) [https://www.cnblogs.com/littlecarry/p/11939809.html](https://www.cnblogs.com/littlecarry/p/11939809.html) [https://www.jianshu.com/p/c4f023d02f0c](https://www.jianshu.com/p/c4f023d02f0c) [http://blog.longjiazuo.com/archives/4807](http://blog.longjiazuo.com/archives/4807) [https://www.zhihu.com/question/26954130](https://www.zhihu.com/question/26954130)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看