<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國際加速解決方案。 廣告
                ## [內部類方法和作用域](https://lingcoder.gitee.io/onjava8/#/book/11-Inner-Classes?id=%e5%86%85%e9%83%a8%e7%b1%bb%e6%96%b9%e6%b3%95%e5%92%8c%e4%bd%9c%e7%94%a8%e5%9f%9f) 到目前為止,讀者所看到的只是內部類的典型用途。通常,如果所讀、寫的代碼包含了內部類,那么它們都是“平凡的”內部類,簡單并且容易理解。然而,內部類的語法覆蓋了大量其他的更加難以理解的技術。例如,可以在一個方法里面或者在任意的作用域內定義內部類。 這么做有兩個理由: 1. 如前所示,你實現了某類型的接口,于是可以創建并返回對其的引用。 2. 你要解決一個復雜的問題,想創建一個類來輔助你的解決方案,但是又不希望這個類是公共可用的。 在后面的例子中,先前的代碼將被修改,以用來實現: 1. 一個定義在方法中的類。 2. 一個定義在作用域內的類,此作用域在方法的內部。 3. 一個實現了接口的匿名類。 4. 一個匿名類,它擴展了沒有默認構造器的類。 5. 一個匿名類,它執行字段初始化。 6. 一個匿名類,它通過實例初始化實現構造(匿名內部類不可能有構造器)。 第一個例子展示了在方法的作用域內(而不是在其他類的作用域內)創建一個完整的類。這被稱作局部內部類: ~~~ // innerclasses/Parcel5.java // Nesting a class within a method public class Parcel5 { public Destination destination(String s) { final class PDestination implements Destination { private String label; private PDestination(String whereTo) { label = whereTo; } @Override public String readLabel() { return label; } } return new PDestination(s); } public static void main(String[] args) { Parcel5 p = new Parcel5(); Destination d = p.destination("Tasmania"); } } ~~~ **PDestination**類是`destination()`方法的一部分,而不是**Parcel5**的一部分。所以,在`destination()`之外不能訪問**PDestination**,注意出現在**return**語句中的向上轉型-返回的是**Destination**的引用,它是**PDestination**的基類。當然,在`destination()`中定義了內部類**PDestination**,并不意味著一旦`destination()`方法執行完畢,**PDestination**就不可用了。 你可以在同一個子目錄下的任意類中對某個內部類使用類標識符**PDestination**,這并不會有命名沖突。 下面的例子展示了如何在任意的作用域內嵌入一個內部類: ~~~ // innerclasses/Parcel6.java // Nesting a class within a scope public class Parcel6 { private void internalTracking(boolean b) { if(b) { class TrackingSlip { private String id; TrackingSlip(String s) { id = s; } String getSlip() { return id; } } TrackingSlip ts = new TrackingSlip("slip"); String s = ts.getSlip(); } // Can't use it here! Out of scope: //- TrackingSlip ts = new TrackingSlip("x"); } public void track() { internalTracking(true); } public static void main(String[] args) { Parcel6 p = new Parcel6(); p.track(); } } ~~~ **TrackingSlip**類被嵌入在**if**語句的作用域內,這并不是說該類的創建是有條件的,它其實與別的類一起編譯過了。然而,在定義**Trackingslip**的作用域之外,它是不可用的,除此之外,它與普通的類一樣。
                  <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>

                              哎呀哎呀视频在线观看