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

  • 相关阅读:
    CodeForces 656B
    时间限制
    哈哈
    &1的用法
    codeforces 385 c
    hdu 1176 免费馅饼
    poj 1114 完全背包 dp
    poj 1115 Lifting the Stone 计算多边形的中心
    jar包解压
    重定向
  • 原文地址:https://www.cnblogs.com/wsw-bk/p/7834801.html
Copyright © 2020-2023  润新知