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

Posted 照破山河万朵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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就可以了。

 

以上是关于JAVA-初步认识-第十章-内部类-局部内部类的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记3.8.2 内部类 - 局部内部类

Java面向对象(OOP)--内部类(局部内部类)

java内部类之成员内部类之局部内部类

java 如何调用局部内部类和匿名类

Java中,局部内部类

第38题JAVA高级技术-内部类2(局部内部类)