免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Java語法探究——從多層內(nèi)部類/嵌套的類中訪問外部類的成員
從多層內(nèi)部類/嵌套的類中訪問外部類的成員

本文用到名詞說明:

內(nèi)部類:Inner Class

嵌套類:Static Nested Class (與標(biāo)題上的嵌套的類不同,此處是專有名詞)

靜態(tài)內(nèi)部類:同嵌套類一個(gè)意思,一物兩個(gè)名字而已。

 

在下面,我們看到對(duì)于B類來說他的嵌套層次是:AcessMethod-A-B ,

那么訪問方法如下:

class B {
      void h() {
        System.out.println("h()");
        g();
        f();
      }

AcessMethodA來說對(duì)B,都是透明的,直接調(diào)用。

嵌套類實(shí)例化的順序:有外到里!AcessMethod-A-B

調(diào)用代碼如下:

    AcessMethod am = new AcessMethod();
    AcessMethod.A a = am.new A();
    AcessMethod.A.B b = a.new B();
    b.h();

這里很有意思的一點(diǎn),’.new’語法產(chǎn)生了正確的作用域。

 

疑問:下面我們來看一下在B.h()中怎樣調(diào)用A1.g()方法?

 

下面我們來看是否可以在B中調(diào)用A1.g()方法,在B.h()方法中原則上可以這樣調(diào)用A1.g()但是A1沒有實(shí)例化,所以這樣是錯(cuò)誤的,也就是在B中無法調(diào)用A1中的非靜態(tài)方法了。

 

假設(shè):如果A1.g()static類型,那么在B中可以這樣調(diào)用A1種的方法:A1.this.g();

 

但是這是不可能的,因?yàn)樵?/span>A1.g()不可能定義為static類型,詳細(xì)看下面的問題1問題1:在什么情況下可以定義static 方法),這是一個(gè)缺點(diǎn)吧,但是可以使用嵌套類來解決了。

/**
 
從多層嵌套類中訪問外部類的成員.  .new“語法產(chǎn)生了正確的作用域
 */
public class AcessMethod {

  private void f() {
    System.out.println("f()");
  }


  class A1 {
    private void g() {
      System.out.println("A1 - g()");
    }

}


  class A {
    private void g() {
      System.out.println("g()");
    }

    class B {
      void h() {
        System.out.println("h()");
        g();
        f();
      }
    }
  }

  public static void main(String[] args) {
    AcessMethod am = new AcessMethod();
    AcessMethod.A a = am.new A();
    AcessMethod.A.B b = a.new B();
    b.h();
  }
}

運(yùn)行結(jié)果:h()

g()

f()

 

問題1:在什么情況下可以定義static 方法?

 

只有在頂層類中定義,或者在靜態(tài)內(nèi)部類中定義,看下面的例子

public class Test {
  static void t(){}
  class T2{
    //!
錯(cuò)誤,The method a cannot be declared static; 
    //static methods can only be declared in a static or top level type
    //static void a(){}
  }

static class T3{
        static void a(){}
  }
}

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Java 內(nèi)部類與靜態(tài)類
java嵌套類(Nested Classes)總結(jié)
深入總結(jié)Java中多態(tài)實(shí)現(xiàn)機(jī)制
java中的內(nèi)部類總結(jié)
Java內(nèi)部類總結(jié)
內(nèi)部類
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服