<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### "是一個"與"像是一個"的關系 對于繼承可能會引發爭論:繼承應該只覆蓋基類的方法(不應該添加基類中沒有的方法)嗎?如果這樣的話,基類和派生類就是相同的類型了,因為它們具有相同的接口。這會造成,你可以用一個派生類對象完全替代基類對象,這叫作"純粹替代",也經常被稱作"替代原則"。在某種意義上,這是一種處理繼承的理想方式。我們經常把這種基類和派生類的關系稱為是一個(is-a)關系,因為可以說"圓是一個形狀"。判斷是否繼承,就看在你的類之間有無這種 is-a 關系。 有時你在派生類添加了新的接口元素,從而擴展接口。雖然新類型仍然可以替代基類,但是這種替代不完美,原因在于基類無法訪問新添加的方法。這種關系稱為像是一個(is-like-a)關系。新類型不但擁有舊類型的接口,而且包含其他方法,所以不能說新舊類型完全相同。 ![1545764820176](https://lingcoder.gitee.io/onjava8/images/1545764820176.png) 以空調為例,假設房間里已經安裝好了制冷設備的控制器,即你有了控制制冷設備的接口。想象一下,現在空調壞了,你重新安裝了一個既制冷又制熱的熱力泵。熱力泵就像是一個(is-like-a)空調,但它可以做更多。因為當初房間的控制系統被設計成只能控制制冷設備,所以它只能與新對象(熱力泵)的制冷部分通信。新對象的接口已經擴展了,現有控制系統卻只知道原來的接口,一旦看到這個設計,你就會發現,作為基類的制冷系統不夠一般化,應該被重新命名為"溫度控制系統",也應該包含制熱功能,這樣的話,我們就可以使用替代原則了。上圖反映了在現實世界中進行設計時可能會發生的事情。 當你看到替代原則時,很容易會認為純粹替代是唯一可行的方式,并且使用純粹替代的設計是很好的。但有些時候,你會發現必須得在派生(擴展)類中添加新方法(提供新的接口)。只要仔細審視,你可以很明顯地區分兩種設計方式的使用場合。
                  <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>

                              哎呀哎呀视频在线观看