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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 7.3.3 多態性 在 7.3.1 中定義的類 Student 和 Teacher 中,有一個同名的方法 getNum。雖然同名,但這 個方法在兩個類中的行為是完全不同的:在 Student 中返回的是學號,而在 Teacher 中返回的 是學生人數。因此,當我們向一個對象 obj 發送 getNum 消息時,所得結果取決于 obj 的類型。 在 OOP 中,多個不同類的對象都支持相同的消息,但各對象響應消息的行為不同,這種能 力稱為多態性(polymorphism),即同一操作具有不同形態的意思。 其實多態性對我們來說并非很陌生的概念。考慮表達式“a+b”,請問這個表達式執行什么操作?答案是有多種可能。如果 a、b 是數值,則該表達式執行數值加法運算;如果 a、b 是字符串,則該表達式執行字符串合并操作;如果 a、b 是兩個二元組,則該表達式執行結果 是一個四元組;等等。像這樣,一個操作的含義依賴于被操作的對象,就是多態性。 多態性使得我們能夠刻劃不同類所提供的相似方法,對使用者來說易理解、易使用,能 夠減少編程錯誤。相反,不同類的相似方法如果定義為不同名字,對使用者來說就很不方便。 例如,在 Windows 環境下,“雙擊”就是一個多態操作,雙擊不同對象導致的行為是不同的。 雙擊可執行文件,能夠執行程序;雙擊 mp3 文件,可以播放音樂;雙擊窗口標題欄,可以極 大化或恢復窗口大小;等等。用戶如果知道“雙擊”大體上執行“打開”這個動作的話,那 么學習使用 Windows 時就能舉一反三。 多態性的一種典型用法是,讓處于同一層次的多種對象都能響應同一個消息,但導致的 行為由各對象決定。例如,如果“人”有學生、教師、官員等子類,這些子類就是處于同一 層次的,假設他們都能響應消息 getNum:學生返回自己的學號,教師返回學生人數,官員返 回工資數額。盡管對象行為各不相同,但在編程時我們可以不管這些差別,以一種統一的方 式來處理他們。假設 tom 是個學生,huck 是個教師,jerry 是個官員,則我們可能寫出下列代 碼來統一處理這些對象: ``` >>> people = [tom,huck,jerry] >>> for p in people: print p.getNum() ```
                  <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>

                              哎呀哎呀视频在线观看