00:00
呃,下一个的内容叫代码块,代码块或者呢也叫做初始化块,这呢是我们讲的类的成员之四,前面的三个呢,更重要一些熟性方法构造器,这个呢,是每个大家都需要熟悉非常熟悉的,那么代码块的话呢,我们用的频率呢比较低,大家呢,对于代码块的掌握的话呢,就是你知道呢,它什么时候加载,什么时候用的,包括呢,对属性赋值的时候呢,我们也可以考虑它,其实就就行了就行了,好那具体的说,具具体的来说,首先呢叫代码块的一个作用,那代码块呢,我们说就是用来初始化类或者我们这个对象的一些这个信息的,泛泛的来说一下就叫信息了,就是在我们这个类加载的时候,在我们对象创建的时候,我们呢需要呢,你加载哪些情况,加载哪些信息,在你创建这个加载类,它自动的就执行了。
01:00
在你创建对象,它也自动的就执行了,可以做一些初始化的操作好,那么分类的话呢,我们这里提到个点,说这个代码块啊,它就是一个大括号,它呢可以用来修饰的这个关键字啊等等的很少说代码块呢,说要是修饰啊,要是使用这个修饰符,那我们说呢,也只能够使用static,所以自然而然的我们就分成了叫使用static和不使用static的,对,就是静态和非静态CTRLC。静态非静态好,那么下面的话呢,我们就分别呢,针对于静态非静态呢,就展开来说了,那静态的话呢,我们有这样的一些点,CTRLC非静态呢,有这样的一些点,所以这块呢,这些点的话呢,大家就这个每一个呢都过一下,你过一下一看哦,很清楚很清楚,哎这就可以了,也不是要求大家说静态代码块有什么特点,12345非得背下来,这个没有必要,你就是真正工作的话呢,你现在让一个做过开发人非你就让他背,你说静态代码块有哪个有哪几个知识点,这个他也不一定能说全了,但是他用的时候呢,肯定能比较熟,所以大家也是一样,就是你真正你用的时候呢,你能知道代码呢写错了,关于代码块这块呢,你知道呢,是什么原因,就是到那个时候呢,你能知道是这里边某个知识点你违法了或者没遵守。
02:27
哎,出错了就OK了。行,这这关于这个代码块,非静态代码块这个情况。那这呢就就不多说了,就啊嗯,这个呢,需要额外注意的就是我们这个静态的结构,或者是非静态这个代码块,这个结构呢,它跟其他的结构呢,还有点区别,其他的像属性也好,方法也好,是你调的时候呢,它才去执行,因为人家都有变量名,都有方法名,而对于我们这个代码块的话呢,结构极简,想调呢它也没有名,那其实呢,它就属于自动执行了,那就是看它什么时候执行,所以呢,关于代码块我们都说呢,叫随着类的加载,或者呢叫随着对象的创建,不是后边呢,不是叫随着加载而加载了,而是随着加载而执行。
03:12
就是它呢,就是自动的执行的,这个事呢,大家要关注一下,随着对象的创建而执行,嗯,不受不受你显示调用的这个情况,既然人家是自动执行的,那意味着呢,就是呃,对象你造的时候呢,它执行也就执行这一次了,你想让再来一次啊,不会的。跟方法不一样,方法你调几次它就执行几次行,这呢就是说的这个情况,那么接下来说实例化子类对象时,实例化子类对象的时候,我们涉及到呢,关于父类子类中的静态代码块,当然负类中可能也有呃,非静态的,还有构造器的一个加载顺序,当然咱们客户呢,其实有两个练习题对应的这个练题,这个呢,不熟的大家下来再看一看,一个呢,我们叫这个叶子。
04:01
它的一个测试,还有一个呢,叫这个sun是吧。这两个练习题大家看一看,然后我们总结出来了两句话,由对父极子,静态先行。那体会一下这两句话,就是我们呢,假设呢,这时候不不那么复杂,就就两层啊,就是一个负有一个子,那么我们现在造一个子类对象,先加载的是负类的静态代码块,然后此类的静态码块,我说叫静态可能还不准确,应该叫执行,直接呢就执行了,你要负类里边有个静态方法,是加载了静态方法,但是这个静态方法不会主动的就乱了,因为方法这种呢,都必须你去点掉它才run,咱们现在说的是执行,执行的话就静态代码块直接就执行了,嗯,然后的话呢,这个静态的都执行完了,只叫静态先行的,由父极子的这种静态先行的,然后呢。再看这个非静态的了。
05:00
所以就涉及到负类当中非静态代码块的执行,构造器的执行,然后这呢就是非静态代码块的执行,构造器的执行,就是这样的一个顺序行这个不熟的呢,你再看看这两个代码就可以了,这呢是我们说的这样个事,那这个事说完以后,关于这个属性复制的位置呢,我们就都讲了,咱们考试呢,也考这个事儿了。复制的位置就这样的五个位置,对应的这个顺序,这个大家都得清楚,后边呢,我们再没有其他的位置了,就这么几个位置,那我们一方面呢,提醒你可以在这些位置上去赋值,另外的话呢,如果在多个位置赋值了,你可知道谁先执行谁后执行的这个结果应该是多少,这个得熟悉,有又没了。好,这呢是关于这个属性赋值,这就过了,下一个呢,关于final关键字,这个关键字呢,其实也算是比较重要的,但是呢,它比较简单,比较好理解,首先final一个翻译最终的那有点像个形容词一样啊,最终最终的可以用来修饰的结构类方法变量。
06:12
不止是属性。那么具体的具体的话呢,那就是修饰这样的几个结构,哎,用来修饰一个类啊,就是一个不能被继承方法,不能被重写修饰变量,变量呢我们又分成了两部分,第一个呢,就是你修饰一个属性,第二呢就修饰一个局部变量,对,那尤其呢是修饰属性这块呢,我们具体的又稍微多提了提。14这样,这个是2.1。2.3它的一个小一小二。
07:03
行,这是额外的一个事儿,那修这个类呢,不能够被继承,这个我们还举了举例子了,就是凡是呢,以后大家看到一个类呢,加final了,你就别继承了,直接要想用呢,就直接拿过来用就OK了,咱们自己定义类的时候呢,嗯,其实有时候呢,就想不到去加final了,因为加了final就意味着你这个类的功能呢,就不能再被扩展了,所以很多时候我们这个类呢,可能都不会去加final了,然后下一个呢,方法这块呢,我们就不能被重写了,那我们有时候也很难保证说这个方法呢,在你的此类当中呢,是不是还要被重新的再扩展一下,所以这个方法呢,有时候我们也不会去给它加上赛。嗯,但是你知道呢,我们要看到一些方法有翻种了,你得知道什么情况啊,那么关于修饰变量这块呢,实际上是咱们用的比较多的,那变量呢,又分为你是修饰属性还是修饰修饰这个局变量的这个问题,那么final呢,来修饰一个属性的,这个时候呢,咱们用的是比较多的,如果一旦修饰属性呢,表示呢,你这个属性就是个常量了,常量就不能改了,就是一看到final呢,知道是这个意思,咱们在开发当中有时候经常会定一个类,在这个类的上面呢,会经常呢整几个常量,就是因为咱们有时候会在这个代码里边经常会写一些数,说我造了一个数组,长度是十。
08:16
我造了一个什么什么结构,这个怎么怎么样,或者我这儿这个形象点,咱们那时候举例说,就像玩游戏啊,或怎么样操作有个左右上下左右,像这个呢,你就不要在这里边去写具体的数了,因为有时候我们看到这些数吧,你当初你写的时候呢,造了一个数组的长度是十,知道是十,后边呢,可能用着用着用着发现诶当初那个数是几来着,记不清楚了,或者呢,我为什么当初定义的是实在的有点迷糊了,所以通常呢,我们在代码当中,大家凡是呢,出现这种数给写死了的。不是说你这个行参了,行参你传的时候是动态传过来的,是你在这个方法里边写一些数值的时候,写死了的这种数值,通常呢,我们都会把这个数值呢,提到最开始造成是一个常量,然后你在你这个后边用到这个数的时候呢,去调你这个常量,这个回头时候呢,一方面就是你这写个十,回头你还想用这个十,我直接呢就不会再写个十了,你直接呢拿这个常量过来用就行,这样也能避免你出错,比如说你回头你想改成20了,但是你忘了别的位置有没有还用这个十了,你要忘了,这就错了,而你这个时候呢,你要想改成20,去这改一下写成20,下面就跟着都改了。
09:24
这是一个好处,另外的话呢,就是你一开始你定一个20,你说你你不清楚我为什么要定义成20,但是你要是定一个常量的时候呢,你通常会这个位置写这个常量名的时候,会写的比较清楚,这个常量是干什么的,通过名字呢,也能够体现它的一个意义,所以呢,我们这样做呢,也是方便你后边呢就是更清楚,所以呢,就在代码里边,我们凡是用到一些数值的这种常量的,哎,那都一开始定义成一个final的一个量,一个属性这样子来做,所以这个呢,用的是稍微多一些的具体赋值这个位置的话呢,这个大家根据实际情况呢去决定就可以了,一般的话呢,如果大家都共用一个,那你就是或者说大家的值都一样,其实相当于还是用static又加了一个,就加上static final的这种呢,那你就直接在这赋个值了,然后呢,你要是每一个对象呢。
10:10
这个值不一样,但是呢,又希望它是常量,就是我们所说的每个人的身份证号,那对这个时候你就在构造区里边去付就完了,诶在代码画中呢,咱们说用的比较少一些,哎,就这样,什么时候非要用呢?就是说你这个显示赋值的话呢,这个一行代码搞不定了,需要有很多的储备,甚至呢调很多方法,有又抛异常等等,把这些事情的话呢,我们就塞到代码块里去做了,嗯,这样,那下一个呢,就关于final呢,修饰这个叫局部变量,这个呢,咱们这个见的少一些,但是你要见到的话呢,知道这个情况,就是你调了一个,尤其像这个行参的时候,调的时候呢,给人赋个值,里边呢,代码中就别去再赋值了,仅此而已。行,这呢就是关于我们这个final这个知识,那最后的话呢,S static加final这两个关键词呢,它俩不冲突,今天呢,我们讲这个abstract,这个abstract呢跟这个final呢就冲突,就是它们两个意思的话呢,就是有一些冲突的地方就不能同时用了,而static跟final呢,它俩没有任何问题,Sta呢就是随着类加载而加载,你呢说的是常量,咱俩拼一起,那就是既有你的功能又有我的功能,那TE跟final咱们说呢,可以用来修饰一个属性。
11:18
也可以用来修这个方法。对吧,方法的话呢,你要加static,就是直接通过类掉了,然后呢,你这个final呢,就是不能重启了,也有但是少一些,但是我们用static final合在一起去修饰属性的情况比较多,那这个呢,我们表示叫全局常量,这个我们在接口当中定义的呢,所谓的加双引号叫变量了,或者定义的属性,接口中的属性呢,全是全局常量。哎,这个咱们一讲大家就清楚了,这呢是咱们讲的这个final关键字行,这呢就是整个咱们复习的内容。
我来说两句