00:00
这一小节呢,我们来学习一下作用域,作用域呢,其实就是这个变量函数对象的这个可访问性,然后这个作用域怎么去理解呢?我们来看下面这张图啊,这里呢,这个灰颜色的方块呢,我们把它理解为教室,然后呢。这个上面这个不断说话的这个人呢,就是老师,下面这个每一组呢,就是每一组的学生标红的呢,他就是这个小组的组长,然后这个时候呢,老师在这个教室里面,他能管理的学生呢,就是这四个组的学生。它的作用欲呢,就是作用在整个教室里的所有学生了,这就是他的作用欲。而每个小组呢啊,他都有自己的组长,他要收作业的话呢,就是一组一组的组长啊,他去收一组小组内的所有成员的这个作业。
01:04
这个时候呢,小组的组长,他就是他的作用域呢,就是这一整个小组。而并不能跨组去收作业啊,这样的话呢,我们就认识到了这个作用域的这样的一个概念。然后呢,我们来看一下代码当中如何去理解。这里呢,我建了一个类叫classroom啊,代码非常简单,我就不带着大带着大家敲了,Classroom呢就是这个教室了,这个class啊,就是这个最外层的这个回快了,然后group呢,就是其中的这个GROUP1呢,这个方法呢,其实就是那个小组,每个小组里面呢,都会有这个学生啊。就大概这样的一个和那张图上的这样的一个对应关系,好然后这个时候呢,如何去体现这个代码里面的作用欲呢?现在呢,我我在这个GROUP2里面想去访问这个STUDENT1,这个STUDENT1呢,它又在这个GROUP1里面,这个时候看一下我们能不能去访问,好,我们随便给它附一个值。
02:31
好,这个时候呢,它这里会有一个红颜色的波浪线,它这里提示的就是当前上下文中不存在名称为这个STUDENT1的这样的一个变量访问不到,为什么?因为它在这个GROUP1的这个作用域里面,Group group2呢是没有权限,就是直接访问到GROUP1,你们的这个学生的,他是访问不到的,这就是主与主之间的这样的一个作用域,好这个时候呢,我们再来看一下,就是老师,老师的话呢,他可以,他可以被每个组访问啊,他也可以管理每个组,好这个时候我们来看一下,在这个方法一,这个GROUP1的这个方法内呢,我们可以,我们是可以直接访问老师的。
03:31
马上好,然后呢,在这个GROUP2里面对吧,它也是可以这样去访问的,所以呢,这样的话呢,就是在代码里面呢,体现出了这个作用欲的这样的一个概念,好,然后这个时候呢,他们这个时候呢,它根据作用欲的不同而体现出来的这个,呃。
04:00
这个专业术语的叫法呢,也会不一样,像这个写在直接写在class里面的这样的一个变量呢,叫做什么成员变量。这个成员是相对于什么的成员呢?这个拉的成员,而在这个GROUP1的这个方法内。啊,它就名字就还叫层面变量吗?啊,并不是,它应该叫,相对于这个class来讲的话,它是局部变量,局部变量啊。那如果这个啊STUDENT1相对于这个方法的话呢,那它这个STUDENT1也可以理解为是这个方法的什么成员变量,也可以这么简单理解,但是没有这么叫的,一般的写的方法里面的相对于这个类的话,都是叫做啊局部变量的,然后相对于这个类呢,就叫做成员变量,还有一种变量呢,叫全局变量,全局变量是什么?任何的任何的类都能访问任何的类,任任何的方法都可以访问某一个变量,它就叫做全局变量,全局变量长什么样子呢?它就相当于可以跨班级了。
05:41
啊,我再建一个类CLASS2。这时候呢,我有一个班级是吧,班级这个教室一,然后现在呢,又有一个教室二。
06:01
啊,这有一个叫三。这个时候我们再把它全部拷贝进去啊,同样的同样的它里面都是相同的配置好,这个时候呢,如何体现全局变量。啊,我这里就写拼音了,这时候是吧,校长就出来了。嗯。改个名字吧,嗯,王校长王校长,王校长呢,他是可以被任何想被任何的变量访问,想被任何的这个不管是对象还是方法还是类进行访问,怎么办呢?把它修饰为static静态的,然后呢。
07:03
就是我们随便。随便随便写一个。嗯,这个方法吧,嗯,这个校长呢,就没事就喜欢瞎溜达,然后我们把它修饰为static溜的好,这个时候我们通过王校长。是吧,他他既可以在这个方法里面,在这个班级的这个小这个这个里面去进行访问,是吧,他又又想逛这个教室,怎么办呢?那我们就把它放到这个构造函数里面,我们又又到了这个classroom里面去溜溜达,然后这个CLASS2呢,就是教师二,教师二溜达完了呢,那我们再去教室一里面溜达溜达啊,这一样可以,这个呢,其实就可以理解为是个全局的,它不一定不一定是个方法,但是这个变量也可以是吧,那我们这一个字符串了。
08:24
溜达溜达一下是吧,同样的。把它标记为static。是吧,溜达这个时候呢,我们输出一下,原来王校长在溜达,任何的classroom都可以,都可以有他的足迹。啊,大概就这样好的啊,一个作用欲的一个简单的体现呢,就到这里。
我来说两句