<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之旅 廣告
                ### [protected: 繼承訪問權限](https://lingcoder.gitee.io/onjava8/#/book/07-Implementation-Hiding?id=protected-%e7%bb%a7%e6%89%bf%e8%ae%bf%e9%97%ae%e6%9d%83%e9%99%90) 要理解**protected**的訪問權限,我們在內容上需要作一點跳躍。首先,在介紹本書"復用"章節前,你不必真正理解本節的內容。但為了內容的完整性,這里作了簡要介紹,舉了個使用**protected**的例子。 關鍵字**protected**處理的是繼承的概念,通過繼承可以利用一個現有的類——我們稱之為基類,然后添加新成員到現有類中而不必碰現有類。我們還可以改變類的現有成員的行為。為了從一個類中繼承,需要聲明新類 extends 一個現有類,像這樣: ~~~ class Foo extends Bar {} ~~~ 類定義的其他部分看起來是一樣的。 如果你創建了一個新包,并從另一個包繼承類,那么唯一能訪問的就是被繼承類的**public**成員。(如果在同一個包中繼承,就可以操作所有的包訪問權限的成員。)有時,基類的創建者會希望某個特定成員能被繼承類訪問,但不能被其他類訪問。這時就需要使用**protected**。**protected**也提供包訪問權限,也就是說,相同包內的其他類可以訪問**protected**元素。 回顧下先前的文件**Cookie.java**,下面的類不能調用包訪問權限的方法`bite()`: ~~~ // hiding/ChocolateChip.java // Can't use package-access member from another package import hiding.dessert.*; public class ChocolateChip extends Cookie { public ChocolateChip() { System.out.println("ChocolateChip constructor"); } public void chomp() { //- bite(); // Can't access bite } public static void main(String[] args) { ChocolateChip x = new ChocolateChip(); x.chomp(); } } ~~~ 輸出: ~~~ Cookie constructor ChocolateChip constructor ~~~ 如果類**Cookie**中存在一個方法`bite()`,那么它的任何子類中都存在`bite()`方法。但是因為`bite()`具有包訪問權限并且位于另一個包中,所以我們在這個包中無法使用它。你可以把它聲明為**public**,但這樣一來每個人都能訪問它,這可能也不是你想要的。如果你將**Cookie**改成如下這樣: ~~~ // hiding/cookie2/Cookie.java package hiding.cookie2; public class Cookie { public Cookie() { System.out.println("Cookie constructor"); } protected void bite() { System.out.println("bite"); } } ~~~ 這樣,`bite()`對于所有繼承**Cookie**的類,都是可訪問的: ~~~ // hiding/ChocolateChip2.java import hiding.cookie2.*; public class ChocolateChip2 extends Cookie { public ChocoalteChip2() { System.out.println("ChocolateChip2 constructor"); } public void chomp() { bite(); // Protected method } public static void main(String[] args) { ChocolateChip2 x = new ChocolateChip2(); x.chomp(); } } ~~~ 輸出: ~~~ Cookie constructor ChocolateChip2 constructor bite ~~~ 盡管`bite()`也具有包訪問權限,但它不是**public**的。
                  <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>

                              哎呀哎呀视频在线观看