JAVA-初步认识-第十章-内部类-局部内部类

一.

继续将之前的例子深化一下。现在要讲述的是内部类除了放置在成员上,还能放置在局部上。换句话说,就是哪都能放。

这里局部位置是指哪儿?

继续将程序补全,截图如下:

上面的截图其实交代了内部类在局部位置上的知识点,这里面有一定的规则。

截图中有两个位置创建内部类的对象,有一个没写完,只写了In,但是也交代了创建对象的位置。没写完的那个位置,书写内部类对象是没有问题的,访问内部类是没有问题的,因为它们处在同一层次上,可以"看到"内部类。但是func()和method()处在同一层次上,func()无法看到method()方法里的内部类。→这是我自己的理解。

程序越来越复杂,在Outer类的成员方法中定义了内部类(局部位置,我想起来局部位置是什么?是指位于函数的方法体内),而且在局部位置定义完内部类之后,立即就在相同层次的位置定义了内部类的对象。

接着编译运行该程序。

(我先说明一下我的理解,程序就是外部类调用自己的method()方法,而这个方法中有两次输出。错误,我一开始以为是有两次输出,一个是内部类中的输出,一个是in.show()的输出。但是内部类里的输出应该是不存在的,没有创建对象,怎么可能对类中的成员进行运算。因此,只有一个输出,结果无法输出,因为in对象里面没有num属性。)

编译的结果存在,且输出的是外部类的num,说明什么?系统自动的省略了外部类的调用,输出语句中是Outer.this.num而不仅仅是num。这种表述情况不多(这之前是不是讲解过,内部类可以直接访问外部类中的成员?),另外一种比较多。

接着对程序进行修改,访问的是局部位置中的局部变量。

最终类型就是final修饰的,

这里又开始对不同位置间的调用产生了疑惑,为什么这里可以对x进行访问。

不都是在局部位置中么,为什么它还要加上final呢?不加final还完成不了。

举个例子来说明一下,

返回完object后,可以用一个方法接收(?),举个例子来说明,

这个方法一调用,就返回一个object,要用变量来接收。

如果改成y,也不行,因为y是变化的,加上final就没事了。

这里讲解的知识点就是内部类定义在局部方法中,这种情况不多,另一种情况较多。

对局部的访问不是特别多,只要一加fianl就可以了。

 

posted @ 2017-11-14 22:32  前锋营  阅读(214)  评论(0编辑  收藏  举报