00:00
那我们把这带这个修饰属性,修饰方法呢,这个问题呢,就说清楚了,说清楚以后的话呢,我们自己呢,先来写一个练习题,通过这个练习呢,我们再来说一下这个static一个应用,这呢我写一个圆,关于这个圆的一个练习static关键字的应用。好,这呢我们声明一个叫circle圆,前面呢,我们也讲过啊,也经常写关于这个圆的一些练习题了,那这里边的话呢,我们每个圆呢,都会有一个私有的关于这个半径的一个属性,那很显然呢,这个属性呢,我们应该生明成非static,因为呢,每个圆都有自己不同的这个半径,这是它了,同时的话呢,我们这里边呢,在多一个属性,就是每个圆呢,我们给它一个编号。那很显然,这个编号的话呢,是不是也得是一个非static了,对的,那在这个圆里边呢,我再额外的去声明一个什么呢?就是关于我们回头造了多少个圆的对象,我希望呢,拿一个变量来记录一下,造了多少个圆的对象,记录一下,那这个个数呢,是用一个int型的来声明了,那这块呢,我们也想体现它的一个私有性,我用一个private了,那么此时呢,就要想这个total呢,要不要加一个tic,对,其实呢,就需要加上static,一会咱们一测试呢就知道了,这是一个这个问题,那同时的话呢,这个ID我们希望在赋值的时候呢,它是自动被复制的。
01:34
赋值的,比如说呢,第一个ID是1001,第二个呢,自动的就是1002,然后意思呢往后顺,那这里边呢,其实我还得需要定义一个变量,这呢我也写成一个static了,这一会大家就知道是为什么了,我这呢叫一个initt,初始呢附了一个值就是1001,这呢就出现两个用static修饰的属性,行这呢就学完了,学完以后呢,关于这个circle的话呢,我们再加上一个嗯,球面一个方法,这个方法的话呢,因为每一个圆的半径都不一样,自然呢它的面积呢,你也就别静态了,这肯定也都是一个非静态的方法,Find的area,哎,Return3.14乘以us乘以us行,这是咱们呢就先写成这个样子了,写成这样子以后,我们在这块呢,去创建这个circle口的对象,好一创建对象呢,我们就需要呢,调用这个构造器。
02:34
行,那调用这个构造器的话呢,我们此时造了一个圆的对象,那此时呢,这个半径的话呢,相当于还是个默认值,ID呢也是个默认值,咱们说了希望这个ID呢,是一个这个自动给它赋值的,那就意味着呢,每次造对象的时候呢,这个属性呢,最好呢都给附上值了,那你要是没有显示的去给他写,咱们可以考虑呢,在构造器当中给它做一个复制操作,那我就可以public写一个呢circle,诶在这里边,那么radius呢,我们这一个空参呢,我们就不附了,但是这个ID呢,我们得附上了,所以我在这里边我得写个ID,得赋个值,它这个赋值的话呢,我就可以用一下这个in了,那要这样写的话呢,我们造了一个circle叫C1,我要再整一个的话呢,就是又造了一个叫C2,但是此时呢,这个C1C2呢,它的ID是不是就相同了呀,对,就都是这个1001了,那我们在这个位置呢,我整一个加加。
03:33
那这就意味着呢,就是第一次你造的时候呢,这是一个1001,再呢就是1002了,哎,此时的话呢,你看我们这个in,我们想体现的一个点呢,就是多个对象共享这样的一个特点,共享的话呢,你第一次是1001,第二次呢,我们在已有的这个属性的基础之上呢,就给大家又加了一下,所以就变成1002了。所以体现为呢,就是一个共享的概念。啊,那你想我创建好以后,这时候呢,我去打印一下这个C,它的一个ID。
04:08
这个我们通过这个C1,目前呢,咱们这个C1好像还直接调不了了,因为权限呢没有放开对吧,所以我们还得去提供这个ID的一个盖塞的方法,那半径的话呢,我们也提供一下alt shift s。关于ID,关于radius改赛方法。或者说呢,这个set方法就不写了,因为它这个ID呢,自动自动附的,就不让他再去做修改,可以删掉,那此时呢,我们去加上一个c1.get它的一个ID,那么C2的话呢,也同样的方式去做。CTRLS1下来我们执行。那这时候呢,就是这样。啊,就这样子的啊,就是因为呢,我们目前内存当中呢,只有唯一的一份呢int,所以呢,你对这int做加加的时候呢,它会影响到别的这个对象,再来造这个对象的时候呢,这个in就是在已经加的基础之上有变化的,那如果我要是把这个死在这个去掉呢,那就成了每一个对象是不是有一份这个结构了啊,那此时我们这两个ID就都是100了,对行,那通过这个呃,In加上static这个问题呢,大家来体会一下,这叫所有对象共享这个概念啊,Static声明的这个属性被所有对象所共享这样一个情况,好另外的话呢,我还定义了一个叫total total呢,我们想用它来记录一下创建的圆的个数。
05:46
圆的个数,说白了就是你造了几个圆的对象,就这个意思,那我们现在呢,是造了两个,造两个,我希望呢,在这个位置我要去调这个total的时候呢,那告诉我是二,这个时候我们去调的话呢,其实跟具体的对象就没关系了,咱们希望呢,就是通过类就直接来进行调了,所以我们设置成一个静态呢,也是比较合适的。另外的话呢,我们此时这个total你没有在这个结构当中进行一些调用是吧?或者没有进行一些赋值,它就是始终是零,我们希望呢,你每造个对象呢,它就变成一个加一的操作,是不是也得在这里边操作一下,头头呢,加加一下。
06:26
每操作一下呢,你就加加一下,所以这个时候呢,我们输出说创建的元的个数为,诶加上我们这个通过类,我就直接来调了这个total呢,这个权限又不够了,所以这块呢,Total我们也得给他去设置相应的这个方法,Out shift s。这个total个数个数的话呢,我们让它自动的去做一个添加,所以呢,你就别set了,只提供一个get方法,这时候呢,大家你会发现我生成的这个get方法呢,自动的也就变成是一个static了。
07:02
那就是我们所上午所讲的就是我们如果一个属性呢,是一个static的话呢,通常呢,操作这个属性的这个方法呢,一般呢,也都是一个static,就是他们的生命周期呢,是一样子的,好,那这个时候呢,我直接通过这个circle点我去get一个total保存来测试。那这时候呢,我们的个数呢,就是二。因为呢,这时候我们确实呢是造了两个圆行,这呢是关于我们这个构造器,此时的话呢,我们这个radius没有付,是因为呢我们这提供的是空参的构造器,如果呢,你希望呢,这个radius也附上值,你可以再去额外的提供一个代餐的public circle,我们呢可以在这再造一个代餐的double,然后readers。这样,那在这里边儿呢,你这个半径radius呢,就等于radius这样。那这样呢,算写完了不,我说呀,这两个操作是不是也必须放进来呀。
08:03
对这个呢,大家要小心一点,就是我们呢,这个ID说了,需要让他呢去自动赋值。自动赋值,那么你在这个构造其中让他体现了自动赋值了,那也有可能用户是不是拿它去找对象啊,所以说你这个ID呢,也得给它加进来,包括total也是你用这个构造器造对象的时候呢,做了一个累加,那这个呢也一样的,所以都要加上这个total,这个要小心一点,那因为呢,这两个里边有相同的代码了,所以你也可以考虑把这个注释调上来的时候呢,在这个位置我们调一下是不是这次也可以啊,那相当于呢,我们就回到这儿来调它了。把这两个我们,诶我给你放到上边一点啊,诶这样就是用它呢来替换了,它相当于这样的一个情况,CTRLS一下,这个呢,我们再稍微的演示一下这个,我把这个对象的创建就放到上边了,诶又造了一个这个我叫C3 C3呢这个位置我们加上一个,比如说3.4,这呢相当于是掉到下边这个带参的轨道器了,然后创建的个数,这个也加个ID。
09:19
那这呢,这不就是这个呢,就是相当于用in呢,给它自动的累加去赋值,这个个数呢,就是三啊,你要是在这里边没有加这个Z呢,这就坏事了。那就成这样,嗯,这个ID呢,在这里边你没有负过值,然后呢,这个个数的话呢,也没有加过,所以呢,这之前是个二了,哎,这个要小心一点,这个问题好保存一下,这呢就是咱们关于这个static应用的一个举例,就是大家呢可以主要体会一下,这里是属性,这里边是这个属性,我们哪些属性呢,适合给它生命成静态的,哪些不适合,那这块呢,我们要考虑一下这个问题。行,那么这个static呢,就是咱们上午写的,那其实后边呢,我们结合这个一个概念叫做final,后边咱们还会讲一个final的关键字啊,这个final修饰的一个变量。
10:12
就不再是变量了,就是一个常量了,就有点像咱们这个写这写这了,这个math呢,是咱们一个类了,数学的一个类,这个类里边呢,定义了一个量,这个得叫派,这个派的话呢,你看咱们啊,这个打不开,点这啊打开,然后control。Ctrl o也行不,Ctrl o直接在这里能看着了,这呢就是我们用的这个PA,它这个呢精度比较高一些,这个PA的话呢,用了一个static,咱们就直接可以用mass点来调了,那同时呢,加了一个final,这个final表示的意思呢,就是它是一个敞量了,就这个量不会去改啊,不会去改那讲了final,当然我们也可以说这个事,就是很多时候呢,我们常量的话呢,习惯上呢,就也声明城市叫斯staic,这除了咱们刚才体会,刚才这个应用呢,体会的其实还是这个问题啊,就是很多时候我们在事后呢,会看到一些类中的常量啊,也长长生明为叫sta常量,为什么呢?
11:22
我这一个类,这个类里边呢,我定义一个量,这个量的话呢,嗯,如果你要不用sta这个修饰,这就是,呃,不用sta修饰,也不用final修饰的话呢,它就是一个普通的一个量,每个每造个对象呢,这个量可以是不一样,比如说就相当于是内幕一样,那现在的话呢,说这是个常量,常量意味呢,就是后边我要赋一个值,这个量的话呢,针对于每个对象来讲都是这个值。大家每个人都用这个值,都用这个值的话呢,那是不是就每个对象还都不会说不同了,那不妨呢,是不是我们就让大家共享这一个就可以了,所以呢,我也就给大家加上了一个static,就像我们这里边这个派一样。
12:02
啊派呢,就是一个常量,就是3.1415926啊这样一个数,那大家呢都这样用,那不妨呢,把它也加上一个tetic,加上一个tetic得了,哎,就是这样个情况,行,这个呢,我们后边呢,大家再去体会一下,这呢是咱们写的这样的一个应用。
我来说两句