首页 > java内部类名字的作用域?

java内部类名字的作用域?

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

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

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


这里主要指的是:

由于内部类作用域必须依托明确的外部类,要在语法上明确内部类和外部类的关系吧。

dn.new Inner();这种语法可以很明确的表示,是dn(这个外部类)去new了一个Inner()(内部类)对象,这个对象必须依托于dn这个对象。

dn.new DotNew.Inner();如果用这种语法,那么 前面不管是不是dn都好,甚至可以换成xxx.new DotNew.Inner(); 甚至都可以换成 new DotNew.Inner();这样感觉这个Inner和 谁去 new的没有太大关系了。

当然这只是我看到这么一句话然后去揣摩作者想表达的意思,不一定对。

【热门文章】
【热门文章】