00:00
行吧,那咱们继续再往下吧,啊再往下按说呢,这会儿我们应该是去讲一下这个继承了各位啊,就是说再往下呢。看得懂写不出来,嗯,慢慢来吧,啊,你以为那么简单的做做做一个程序员是不是啊下面呢,有一个什么呀,叫继承的东西。继承啊,但是这里呢,我觉得有必要去总结总结,我们不能一味的去讲。啊,一味的去讲啊,学生啊,现在可能也受不了,是不是大家可能现在顶不住了。不过这个作业题我就先说到这儿了啊,没了。作业没了各位啊,代码在哪,在这个15作业。啊,你看我写的是吧,啊,这很正常啊,这很正常,那么对16的课堂笔记我打开啊。今天其实到这为止就讲了个this。总结所有的。嗯。变量。
01:00
啊,怎么访问。总结所有的方法,怎么访问。啊。我们来总结总结这个,然后再往下我们去学习一下集成。啊。好了,那么接下来咱们来看一下啊,就是说总结总结对吧,总结的放到哪呢?就CHAPTER11下边啊幺幺下边。然后。嗯。一直想要这样的总结。我写的。行吧,咱们来总结一下啊,总结一下来各位就是说总结所有的变量怎么访问,总结所有的方法怎么访问。啊,我觉得还有必要总结一下类中有什么,总结一下到目前为止我们都我们在一个类中都接触过什么了。
02:05
啊,都接触过什么了,我觉得最好能有一个例子啊,给他给他给他全部给他,给他融合在一起啊,把这个事儿说一说行吧,来。呃,我们这块呢,就叫review吧,复习总结啊,Review在CHAPTER11下边啊加了。呃,咱们来个大总结,各位啊,大总结别迷糊啊,首先类体当中可以出现哪些东西,我觉得有必要呢,把这个东西呢再说一下啊,从头到尾啊。来有什么呀,有实例变量对吗?是不是有实例方法对不对?哎,有静态变量是不是对吧?有静态方法对不对?哎,有构造方法对吗。是不是还有什么呀,静态代码块是不是还有啥呀,实例语句框是不是,哎,还有别的吗,各位。
03:10
类体当中有实例变量,实例方法,这俩是静态变量,静态方法这俩是构造方法,这个对吧,静态代码块和实例语句块啊,或者是实例代码块,来大家一起想一下还有没有别的。还有没有别的?这是到目前为止一个类当中可以出现的,对吧,哎,到目前为止。一个类当中可以出现的。就这些东西。就这些东西,但是呢,这个里边好像还少了一个东西,对吧?啊就是什么呀,就是哎方法里边出现什么呀,这个变量对吧?哎,这个变量我们叫什么呀,叫做局部变量是不是,哎有实例变量,有静态变量,还有什么呀,局部变量。
04:02
那其中实例变量和静态变量这两个都属于成员变量啊,属于成员变量啊,这是呢,总结一下,到目前为止,我们一个类当中都有什么东西啊,都有什么东西,那行,那接下来我就写一个例子吧,我写一个例子,把这些东西都给它容纳进去行吧?啊容纳进去啊。Public class啊,然后呢,我们叫review回顾啊,Public。Static voidman。好,那么接下来我在这里定一个I等于,比如说100,这就是我们所说的什么呀,叫做局部变量喽是吧,而这个方法被称为什么呀,静态方法喽,这个类呢,其实就是一个类喽是吧?哎,一个类哎一个程序的入口啊,就是从这进来的啊入口。那么现在你再去看这个方法,我觉得就应该很清晰了,这是一个修饰符列表,这是返回类型,这是方法名,这是形式参数列表,这个大框呢是一个方法体,方法体当中写代码,代码这个呢表示局部变量好了,这样的话,这个静态方法对吧?哎,呃,里边。
05:10
也没写啥东西啊,来再往下,继续往下,比如说我在这里写一个学生类,学生类呢,Class student啊,我们比较熟这个啊,所以我们就写student,那学生呢,有什么呀,有学号对吧?还有什么呀,有姓名,那么记得封装这个事儿,各位啊,记得封装就首先第一个学号呢,我们就int类型对吧?姓名呢,我们就string类型对不对?然后再来一个构造方法是不是,那构造方法无参呢?哎,有一个是不是,然后呢,再来一个什么呀,有参数的哎,构造方法,有参数的构造方法来这个是name吧,好,This点什么呀?Number number this.name name,好,这里是不是把this也说了,对不对,哎,This也说了。好,这是构造方法,这是属性,好,这里有出现了this。
06:04
这里使用了this啊,使用this,那假如说我默认创建的这个学生,默认创建的学生啊,叫做张三,编号是000假设啊默认就是调用什么呀,这个无参数的构造方法啊,默认创建的学生学号是。000不能是000100啊,然后名字是什么呢?是张三,那么这个时候大家知道我们在这是不是应该调下this括号啊,是不是,哎,100逗号什么呀,哎,我们写上叫什么呀,叫张三,那么也就是我们调用我们的无参数过错方法,它会通过this括号的方式去调用,调用另外一个构造方法对不对,那这样的话100呢就传给这个了,是不是张三就传给他了,这样的话他和他是不是就完成了赋值啊,哎,我们把this括号是不是在这也用了呀?哎,这次括号啊在这里也使用了啊,也使用了。
07:05
This用了啊,This括号也用了啊,构造方法出现了,属性也出现了,那再往下的话,其实就是封装了,对不对?And get方法啊get方法,那么这块呢,我们这个set get方法呢,这样啊,我们写一个比如set name是不是,哎这个呢,就是老规矩了,你照着抠就行了啊这玩意儿呢,没啥来。Get name直接返回谁呀?哎,返回我们的name啊,Name来,接下来在这呢,我们public VO set number学号是不是number,然后接下来this the number number是不是,哎,那么get number访问in get number,然后直接return number就行了啊好,行了,这是set get方法,其实这部分就是封装了,就是我们之前所说的封装了啊,封装。
08:00
好了,那么接下来这个变量又被称为量,叫做实例变量,是不是?哎,实例变量?那么我们学生有静态变量吗?学生有静态属性或者静态变量吗?大家一起想一想,学生的什么是一样的。所有的学生。什么是一样的?各位有没有什么好的想法?同一个学校,哎哟,学校名字。学校名字。学生的学校名字不一定一样哈。都是学生国籍。行吧,咱们咱们随意吧,啊随意。呃,静态变量。我们的岗位各位。岗位啊。
09:00
岗位啊。不能加private啊,不能加。吧。假如说加一个private还行不行,那就不行了啊,访问不了了static啊,那static这一块呢。呃。岗位工作是什么呀,学习。哎,就就就就这么地吧,啊,就这么地了,学习。学这个静态变量吗?有静态静态变量啊,类级别的属性,类级别的属性啊好静态变量,那静态方法我们提供一下,我们提供吧。两个实例方法,我们在提供什么呢?两个静态方法。行吧,那静态方法这块就来呗,Public static void,嗯,VOMM1随便system.out点打印输出M1方法执行student类的M1METHOD execute执行很简单啊,再来一个publics static对吧?WHY m2,然后M2这块呢,怎么着呢?system.out.line打印我们输出什么呀,叫做M2的。
10:19
Student他的M2METHOD execute执行。好,那两个实例方法这块呢,Public void study啊,然后这边呢,system.out打印输出,谁正在努力的学习,对吧?This get name啊。谁正在努力的学习?各位,谁正在努力的学习这个代码怎么写?谁谁谁正在努力的学习谁谁谁。正在努力的学习。谁呀?你可以有几种方式啊,行不行。This指的是当前对象吗?点name是不是就是这个呀?
11:04
对吧,哎,或者说你还有没有别的方式啊,咱们正好在这也说一说,总结一下嘛,对不对,好,能不能这次点盖,呃,把this点去掉,直接写name啊。行啊。哎,没有任何问题啊,没有任何问题,那么如果说我现在不访问this name,也不访问name,我现在调方法行吗?比如说我调的方法是this.get什么呀,Name行不行啊?可以吗?那如果说我现在把this点去掉,我直接调这个get name行不行啊。都可以吧,啊就就你this name可以,This去掉直接name行,This get name可以啊,然后get name可以啊,Get name可以。好,大家看这是不是在实例方法里边调实例方法。这是不是在实例方法里面调实例方法就这个德行。
12:02
就下边这两行演示的是什么呀?在什么实例方法中。调用什么呀。本类。其他的什么实例方法?对吧。这个代码有没有问题,各位。没问题吧,你得理解啊,你得理解。想想啊。我们来看一下我们这个程序到底提供了多少啊,首先第一个我们实例变量是有的,这个类的实例变量是提供出来了,然后呢,实例方法我们有没有,大家看这里是不是有study这样的不带study的实例方法是不是。啊。
13:02
四种有点多啊。封装之后是不是只能用的方法了吗?嗯,你不对呀。你封装之后你看好了,这是在本类啊。飞达这是在本类里边吧,这是不是一个class student呀,这是不是本类呀。在一个类当中,我问你这个private私有的能不能在这访问。Private修饰,私有的可以在本类访问啊,私有的是可以在本类中访问的。在其他类不行,在其他类中必须使用什么呀?Set和get方法。啊,方法。他正在学习。
14:00
啊,你比如说我在这再我说提供两个实例方法,是不是我再提供一个吃eat。对吧?system.outline打印输出我说什么呀,叫做this get name是不是加上谁呀,哎。去餐厅吃饭。在餐厅。吃饭了。好了各位,我现在想在study里边去调it是什么意思,就比如说我现在在这里啊,想完成一连串的动作啊,完成一个对象的一连串动作,就是一个学生啊在教室先干什么学习。学习完成之后去餐厅吃饭。那如果你想表示这个的话,你应该怎么表示啊,应该是student吧,S1等于new一个什么student是不是,那你new的时候,你可以调无餐的,也可以调有参的对不对?你调无参是不是默认创建的是张三,你调有参的话是不是可以指定名字呀?
15:05
对不对,哎,那行了,那假如说调误餐了,那么接下来干什么。先干什么呀,学习所以怎么着,所以调用什么,调用学习这个实例方法吧,哎,实例方法S1呗,它是个引用吧,点什么呀,Study是不是点好了。那么当我们study这个学习这个方法在执行过程当中,我们在这个位置输出了他正在努力的学习,那学习完之后怎么着,是不是应该这个方法执行结束之后,表示他学习完了。对吧,在这吧,是不是,哎,方法执行到此处,表示学习完成了。去吃饭,那么大家知道现在我要调这个吃饭的方法,我怎么调啊?我在这儿调这个吃饭的方法怎么调?这不等于方法里边调吗?怎么调啊?
16:00
This点什么?因为它是个什么方法,各位看好了,这是什么方法?实例方法吧,实例方法怎么调用啊?引用吧,引用点什么it吧,是不是,那这个引用是谁啊?不就是this吗?那大家思考一下啊,这个道理其实很简单,这个道理很简单,什么意思呢?就是说我现在这个S1呢,其实就是张三,张三去学习对吧?好,那张三去学习,那这个是不是应该是张三的名字呀。对吧,好,那么紧接着张三学习完之后,那this这个this是不是还是张三,是不是张三学习完,应该是张三去吃饭,对吗。所以应该是this it对不对?哎,this.it去调这个方法吗?是不是好,那能不能把this点省略呢?可以啊,This点可以省略,那么省略的话就是it呗。是不是啊,就是it就行了。It。嗯。好,这是实例方法里边调用实例方法,那现在我们就来编译并执行来看一下。
17:09
Review。张三正在努力的学习,张三在餐厅吃饭呢。是不是,哎,这个程序很正常,那么接下来大家看一看啊,我这个M1方法是不是一个静态方法。M2是不是也是静态方法对吧?那现在我问大家个问题啊,这个it方法这一块能不能调用静态方法,能不能调用静态方法。调用静态M1方法,能不能调在这个方法里边。比如他在这。是吧,Study,然后呢,执行这个这个呢执行,然后调it it这块呢执行执行了之后呢,在这调什么呀,M1M1方法是什么方法呀,静态方法使用什么呀,叫做类名点的方式吧,访问吧,所以这块是不是就是M1呀,类名是谁呀。
18:02
这个类名是谁啊,叫student,所以这块你调的时候注意啊,就是谁啊,就是student点什么me。你吗?STUDENT1。啊,所以这个时候呢,我们再来看看这个程序啊,Java c呢去编译Java去运行。好,你看student它的一方法执行了。这个代码输出了,这说明这个方法执行的呀。对吧?哎,那有同学说了,老师类名点可以省略吗?类名点可以省略吗?答案是可以,因为你这个方法和我这个方法有没有在同一个类,有没有在同一个类当中,在的话,我这是不是可以直接M1。是不是会直接调M1就行了,这个类别点是不是省掉就行了,来Java ch编译Java去运行,好大家看是不是照常也是这样的呀,M1方法执行啊。没问题吧,哎,没问题,有同学说了,老师,我有点懵。
19:03
它这个M1会在前面加this点,还是会加这个类名点呢。你如果这边省了,这边省了,它会自动在前面加什么this点,那为什么这块要是省掉的话,它会自动加这个类名点呢?它是什么机制,什么原理呢。各位有没有想过这个问题?就是说我现在是study方法学习,学习的过程当中我去调eat去吃是吧,那我吃这块呢,又在这掉了M1,那你凭什么在it前面加this点,凭什么在这加this点,凭什么在这个位置会加一个类名点呢?哎,我给大家说一下啊,原因很简单,因为我们的Java程序啊,它可以认定可以检测你这个方法它带不带static。如果你这个方法带着static,它会自动在这个方法名前面加什么,加类名点明白吧,如果诶Java程序检测到你这个方法it前边呢,没有这个static,它会自动给你加什么呀,诶this点你明白吧,哎,它其实很智能的,很智能的啊,所以这块呢,大家要注意,要注意它可以检测你这个方法调的这个方法上有没有static呀,有这个static妥了,那就前面就是类名点。
20:22
他不需要对象。对吧,他不需要对象就可以执行什么呀,这个M1方法。啊,只有M1。就是这样的啊,然后呢,这块要注意啊,这个JVM或者Java程序或者Java编译器吧,你要这样说啊,正常说Java编译器会自动在什么呀,M1方法之前添加什么呀,哎类名点。啊,因为什么呀,因为因为检测到M1方法是一个静态方法。啊,是一个静态方法。
21:00
明白吗?哎,那这个呢。编译器检测到it方法是实例方法,It方法是实例方法会自动在什么呀it方法前添加this点。所以这个程序就是这个样子了,Java c编译,Java运行,你看没有任何问题是吧?那如果说你在M1方法执行过程当中,你去调了M2方法呢,调用M2方法呢,是怎么调的呀?哎,你实际上是类名对不对?类名谁啊叫student.m2呀,是不是?那当然我说类名点可以省啊,直接调M2啊没问题啊,但是你要注意它不会在这加this点啊,是因为你的M2方法呀,前面是static静态。啊,静态它会加类名,你这种方式和这种方式都行啊,你加入C再去编译加入再去运行。你看没问题吧,哎,你写上去之后,实际上是我们的study调了,我们it呢去调了我们M1 M1呢,我们又去调了M2 m2执行。
22:05
整个过程呢,对,就是这样一个展现的一个过程,好大家看实例变量,我们这里是不是有啊,实例方法也有,静态变量静态方法也有。是不是好,那请问同学们,我在这个M2里边能不能直接访问job。工作岗位。或者工作性质。我在这个M2里边直接访问什么。访问这个行不行。可以吗?能不能啊,静态的。我直接访问他行吗?可以吧,哎,没有任何问题啊,Java c编译,Java运行,你看工作性质学习。学习那么大家注意啊,实际上它这个在底层会自动在job前面加什么呀,Student类名。为什么呀,因为编译器检测到job是一个静态变量啊,编译器检测到job是一个静态变量啊,所以这里会自动添加,会自动在什么呀,Job前添加什么呀?哎,Student点啊student点儿明白吧,是这样。
23:24
来,我们再来编译运行工作性质,学习。是吧,哎,可以啊可以。那么这个有静态变量,有实例方法静态,呃,有实例变量实例方法静态变量静态方法构造方法是吧?有了,然后静态代码块实际代码块还没有啊,那静态代码块实例代码块的话呢,就随意了,你在这加一个比如static对吧?哎,然后呢,system.out点在类加载时执行啊。对吧,哎,类加载时执行,那么如果说我这个呢,这个student类加载时执行,那如果说我把它放到了这个。
24:08
问,方法这块也有一个静态代码块,这叫哪个类啊?叫review,这个类加载式执行。啊,这个类加载值执行,那你说先输出这个还是先输出这个,还是说怎么输出呢。来我们编译一下啊,Java c去编译,Java去运行,好大家看他说review类加载式执行,Student类加载式执行,那为什么先是review啊,因为你先执行的是review这个类当中的什么呀?问方法,问方法在执行的时候,你其会进行类加载对不对?但是呢,实际上它在类加载的时候,它会先把review加载进来,Review关联的这些类都会加载,它在这里关联到student,所以student这个类也会进行加载,所以程序执行第一步是先把所有的类全部加载进去。啊,先把所有要执行的类全部加载进去啊。就是类加载机制中是这样的啊,就是在程序执行之前啊,凡是需要加载的类全部加载到gbm当中。
25:10
先完成加载才执行问方法啊,先完成加载才会执行问方法啊,才执行问方法这样的啊,这样的好了解一下啊,了解一下来再编译一下,我们再去运行一下啊是这样。好了,这是一个我们的一个静态代码块,那实例一块是什么呢?就是说我们在构造方法对吧。这一块你可以写一个实例句块吗?哎,这是一个什么呀,我们叫做实例语句块。这个构造方法执行一次,这里就执行一次。对吧,好了,那么接下来我们再来编译,我们再去。好,实例一块执行了,构造化执行一次,这里就执行一次,如果你再去new一个student。
26:02
对吧,哎,你再去一个student叫做S2。那你这块肯定还会再执行一次Java c编译Java异行。对吧,你看这里是不是执行了一次啊,这里是不是又行了一次啊,对吧,因为你在这扭了第二次啊,哎,实例一块会执行啊,那基本上我们这个例子就把这个叫实例变量啊,实例方法呀,静态变量啊,静态方法构造方法,静态代码块,实例代码块方法里边局部变量等等我们都已经涉及到了,包括这个类的属性私有化,对外提供公开的set方法和get的方法,我也给大家涉猎到了啊,其实这个例子几乎涵盖了我们所有讲过的东西,就是面向对象里面所有讲过的一些一些东西都在里边。啊,都在里边啊。那么这块呢,咱们这个。好,那么这块咱们就就就就说到这儿啊,说到这儿。
我来说两句