一.
先书写一个特殊点的程序来学习一下内部类的知识点。
(在没有讲解前,先自己梳理一下,Outer这个外部类里的函数想要访问内部类,也必须创建内部类的对象)
编译运行的结果,我猜测是5。DOS结果显示,我们猜测没有错。
如果,我们想要输出的num是4,该怎么修改。我的想法是将method()方法体中改为new Outer().num。但是视频中采用的方法和我的不一样,将被调用的内部类中的show方法体改了一下,变成了输出this.num,也就是对象中的num,而不是方法体中的num。
接下来就是打印num=3的情况,将输出语句改成Outer.this.num,其实之前输出num=4,也是可以写成Inner.this.num,但是Inner比较多余,不写也成。
这里产生一个疑问,对于类和对象这块知识点中的点号(.)的运行到底是什么样的规则?有没有一个明确的说法呢?
实际开发时,不可能出现这样一连串的num。
这里为什么内部类可以直接访问外部类中的成员?表象是num放在了内部类中,但是调用的还是外部类中的num。就像method()方法,其方法体中的写有show(),为什么从method()方法中书写show()方法,可以直接访问其他的成员?那是因为这里省略了this,实际上是this.num。
调用是有原因的,不是想当然的。
这里的this是指的外部类的对象。