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就可以了。