搜尋

首頁  >  問答  >  主體

java内部类名字的作用域?

在《thinking in java》内部类有关链接到外部类的章节,有这么一段话:

要想直接创建内部类的对象,你不能按照你想要的方式,去引用外部类的名字DotNew,而是必须使用外部类的对象来创建该内部类的对象。即:
DotNew dn = new DotNew();
DotNew.Inner inner = dn.new Inner();
这也解决了内部类名字作用域的问题,因此你不能声明(实际上你不能声明)dn.new DotNew.Innter();

这其中提到的内部类名字的作用域的问题是什么意思?

迷茫迷茫2768 天前779

全部回覆(1)我來回復

  • 高洛峰

    高洛峰2017-04-17 13:19:44

    這裡主要指的是:

    由於內部類作用域必須依托明確的外部類,要在語法上明確內部類和外部類的關係吧。

    dn.new Inner();這種語法可以很明確的表示,是dn(這個外部類別)去new了一個Inner()(內部類別)對象,這個物件必須依託於dn這個物件。

    dn.new DotNew.Inner();如果用這種語法,那麼前面不管是不是dn都好,甚至可以換成xxx.new DotNew.Inner(); 甚至都可以換成new DotNew.Inner( );這樣感覺這個Inner跟誰去new的沒有太大關係了。

    當然這只是我看到這麼一句話然後去揣摩作者想表達的意思,不一定對。

    回覆
    0
  • 取消回覆