00:00
接下来我们介绍一个SC当中比较有特点的内容,那就是包对象。呃,什么是包对象呢?那就是在scla当中可以给每一个包定义一个跟包同名的对象,这个对象就叫做包对象。大家要注意,就是给每个包定义同名对象,那当然就只能有一个了啊,所以它全局只有一份,那它主要用来干什么呢?主要就是它里边定义的所有成员属性和方法都可以作为当钱包下边所有类和对象的共享变量,可以直接访问啊,那简单来讲就是说当前就是一个啊,相当于全局的属性和方法了,只要是当前包任意位置都可以直接访问。整个使用起来就会更加的方便了啊呃,那在使用的过程当中,我们还是看一下代码里边怎么样来实现,我现在呢,就在CHAPTER06下边给这个包创建一个包对象。
01:03
接下来我们试一下,诶,大家看到在idea里边啊,有这样的一个选项,直接可以new一个package object,那当前我们扭出来之后,会发现默认的名称就叫做package package.scale啊,一般情况这就是当前这个包对象的名称啊,然后呃,这不是包对象的名称,这是当前这个文件的名称,而包对象的名称呢,必须跟当前的包名完全一致啊,全局只有这么一份。然后大家看到前面声明的时候,它的关键字是package object,指明它是一个包对象。然后接下来在里边呢,我们就可以直接一些定义当前包共享的笃定和方法,比方说我们这里边可以定义一个啊,就叫做common value吧。
02:00
所有共享的一个值啊,就是通用的值,上规股,然后接下来我们定义一个通用的方法啊,Common啊,那这里也不需要有任何的返回值,我们就默认只要不给,那就是一个unit类型的返回值,这个我们都已经知道啊,里边就直接inline一句话就完了,我们在啊,就是阿里学习啊,All common value。学习就是我们当前要用的这个通用的方法啊,里边我们知道一调要用的话,肯定就是我们在上硅谷学习,那现在我们如果想要访问这个属性和调用这个方法,到底应该怎么用呢?诶,是不是直接在这个CHAPTER06下边的所有类和属性,呃,所有类和对象就都可以直接调用了呢?比方说前面我们不是有TEST01吗?我们直接在这个scale下边,这里可以直接做调用吗?Common大家看没有,不到找不到这样的这个common value这样的一个属性,不能调common method的方法,这主要就是因为。
03:21
当前的TEST01PACKAGE,前面我们说了它啊,Inner这样一个单利对象所属的包,并不是当前的文件所属的位置CHAPTER06,而是我们按照嵌套风格定义出来的这个com点艾特硅谷点scalela啊,那同样道理,下边的这个,尽管我们这个名对象名称就叫TEST01PACKAGE,那在这里也是不可能访问到当前定义的这个O对象里面的内容的,是大家需要注意的一点,那怎么样才能访问到呢?当然就必须得是2.06这个包下边的内容,它的对象单列对象或者类才能访问,那我们就要拗一个。
04:04
当前这个叫做零二。Package object,我们把它定义出来,然后在这里边我们定一个main方法啊,以边再想去访问,诶大家看现在可以访问到了,我们可以直接调这个common method,当然也可以直接访问common value,我们运行一下,看看是不是能够打印出来。没有问题,我们在上硅谷学习,这就是包对象的一个使用啊,我们可以直接在当前包里边定义的任何位置去做一个,做一个调用啊,做一个访问,那当前这个是一般基于这个Java的那种声明方式,那假如说我们用了前面的那种嵌套的定义方式,那又应该怎么访问呢?哎,这里大家稍微需要注意一下,就是如果用了嵌套的方式去定义当前的包的话,那访问的过程其实也是一样,就只要注意把当前的这个包。
05:10
一定是CHAPTER06当前的位置是对的,这样就可以了,就比方说我们这里要这么去定义的话啊,那就把这个直接注掉。啊,这个还是copy过来,那接下来我们要做的其实就是package chapter06嵌套啊,因为我们前面没有其他的层级了啊,如果我们定义的是反写域名那种com.at硅谷,点at chapter06,那这里边就是com,然后画括号,然后package at硅谷再括号。Page t06,然后里边呢,还是一样定义,就把这一个对象直接定义出来就完了,对吧?哎,然后下来直接运行可以得到对应的结果,这是完全没有问题的,其实都一样,那这里需要注意的是,有同学可能想到了,那我们这里边调用的时候,当然是可以用了这个嵌套的这种声明方式啊,那假如说我们之前定义这个package object定义它的时候也是放在了就是其他另外一个文件下边呢,我们不是单独声明出来的,放在其他文件下边,然后又有这个嵌套声明的这样的一个包,那他们怎么样去声明就是正确的呢?这个大家要稍微注意一下,就是需要保证门在同一层级下边,什么意思呢?就是比方说我们这里边定义一个,我们还是先定一个包。
06:34
Pack值CCCC里面我们不是有AABBB吗?现在我们定一个CCCCDDD有了这样的一个嵌套定义的包,然后接下来呢,我们再定义一个对象,那么这个包对象那就是用配置,呃,Project啊,我们要定义。那刚才大家会发现我可以看起来啊,又有这个CCC,又有ddd,那我是不是CCC可以定义一个CCC的包对象,也可以定义一个ddd的包对象呢?
07:12
我们现在看起来好像是这样的啊,我先定义一个DD的包对象,我们可以看一下,不说这里我直接定义一个,呃,School跟之前我们定义的那个稍微略有不同啊,名字不一样哦,这种测试是能够体现出来的啊,里边定义一个at硅谷,那我们就看能不能访问到版里边CD里边非常简单啊,要想访问的话,我们直接print line,好,这里我们还要新新去创建一个object啊,他说我们就还叫做test,零二边来一个命方法。做一个print line,把这个包对象里面的school一个打印看,这里面访问不到。那为什么访问不到呢?就是因为我们当前的包对象声明的时候,必须要跟当前这个包的定义在同一层级下,哎,所以如果说我们把这个。
08:13
放在了当前ddd同一同一层级的这个位置的话,这就可以访问得到了啊,如果要是在在外边的话,那么我们如果它是CCC这个包的一个包对象的话,那其实在CC里边就都可以访问它这个ddd它也在CCC下边,所以这里边访问这个当前包对象里边的属性是没有问题的,这个大家需要注意一下啊啊,这就是关于我们这个包对象的一个用法,我们测试一下会看到这个是完全可以打印到访问到的。
我来说两句