00:00
那么讲完这个继承以后,咱们下边呢,讲的一个新的内容涉及到呢,叫方法的重写,重写呢叫over read或者叫overriight,那这样的是对应的这个英文,前面的话呢,咱们讲的叫重载,对这个重载的英文叫overload,对,就加载的意思了,那重写是什么意思呢?我们来看一下方法的重写。说在此类当中,我们可以根据需要对从父类中继承来的方法呢,进行改造,也称为方法的重置,叫覆盖,这其实就相当于这就叫方法的重写了啊,这叫方法的重写,所谓的改造呢,其实就相当于把父类那个同名同参数的方法呢,我们又重新的来定义了一下,就是这个意思,那么执行程序的时候呢,子类的方法将覆盖覆类的方法,这是写完重写以后呢,它的一个作用,或者它的一个特点啊,那首先呢,咱们通过这个代码呢来体现一下,这呢,我再去新建一个包,这一。
01:11
好,在这里边我们呢,来写这样的几个类,咱们做一个测试,首先呢,我还是用这个person类吧,这是一个person类,然后呢,我再去定义一个叫做student。学生类,然后让这个学生类呢,咱们去继承于这个person类行,那么在person类当中,咱们声明这样的这个结构,这呢,我就先不考虑这个封装性的这个事儿了,直接呢就写这个属性了,String型的name in型的edge,然后呢,这个构造器呢,也可以先提供一个空餐的。代餐的也可以写一个。行,然后呢,我们去提供这两个方法啊,比如说叫it。
02:06
这个呢,我们叫吃饭,诶,Public work。哎,这个呢叫走路。走路或者说走了多远,这个呢,你可以加上具体的一个这个长度啊,比如我们写一个浪浪浪没有那么长了,写个int类型的吧,写一个具体的距离。Distance是这样写吧,距离。这个可以查一下。情况下。对的是吧,英文看不懂,下边不是有个近义词叫L吗?距离走路走了多远?
03:04
走路走的距离是距离是多少多少公里啊,第一次碳四加上公公里行,这呢是我们写的这个副类,副类写完以后呢,我们来看一下这个叫student student继承于父类的时候呢,就获取了它中的属性跟方法了,然后呢,它还定义自己特有的,比如磁砖型的一个major,它的一个专业,然后这块呢,我们也可以去提供它的这个构造器。看这有空摊的,提供一个代餐的。行,接着的话呢,我们这个直接呢,就把复联这个方法就集中过来了,同时的话呢,他自己还写他自己特有的,比如叫study。
04:06
这个呢叫学习学习,然后呢,专业是加上我们的这个major。好,到目前为止的话呢,我们还没有体现这里所谓的方法的重写的事儿,然后我们呢,先在讲这个之前呢,先来写个简单的测试。哎,没方法,然后这个我们现在的话呢,我呢去new一个student,哎,我有个person的话呢,就没啥意思了啊,就是跟继承的也没啥关系,我这呢就去用这个子类的对象,另外以后的话呢,我通过这个子类对象呢去调类方法,调类方法呢有的呢是父类的,有的呢是它自己定义的,那么这是叫负类的it,还有一个呢叫work work呢需要你填一个参数,比如这个叫十公里这个,然后再接着这个S点,它就调一个叫study学习,这个呢是负类中的,这是他自己的,那我们执行一下。
05:12
OK啊行,这呢就是执行的这个效果专业是我们没有赋过值,在这个位置呢,咱们或者在这个构造器这个位置加上一个叫计算机科学与技术啊,这个通常呢,计算机科学技术呢,都大学里边都在这个计算机科学与技术学院,或者有的就要简称计算机学院,再简称呢,就是妓院是吧,嗯,学的这个专业啊,这个然后study的话呢,我们就有这个具体的专业了,这样的情况啊,行这块呢,都还没有啥,这都是继承性的这个点,然后呢,我们来说一下这个叫方法的重写。重写over read或者over right行,首先呢,第一个概念就是什么叫方法的这个重写啊,这个咱们刚才也看了一下,说呢,在子类继承父类以后,可以呢,对父类中这个叫同名同参数的这个方法进行覆盖,进行覆盖操作,那么这里边这个覆盖操作呢,我们就称作方法的重写。
06:30
也称作叫方法的覆盖,或者叫复写啊,都一个意思,什么意思,这个意思,咱们现在呢,这个学生有一个it方法,这个it方法呢,是咱们personal里定义的,那这个方法的话呢,它表示的功能就是吃的功能,但是对于我们学生来讲呢,它这个吃的功能呢,可能有点不太一样,你从傅雷那个技能过来以后呢,到我这儿呢,稍微得需要变一下。那这时候呢,我们就可以对父类中声明的这个方法呢,进行一个重写,重写的时候呢,咱们说要求,要求就是方法名和行参列表都得一样。
07:10
为啥呀?盖,对,我现在要覆盖是不是就要覆盖你啊,咱们前面讲重载的时候提过,说我们如何确定是某一个方法,对,除了方法名之外呢,形态列表是不是也得考虑啊,通过方法名和形态列表,咱们才唯一定位的是某一个方法,现在呢,你就想覆盖人家,那是不是就得要求明确指出来,方网名和清单列表都得一样,对,就这意思啊,那其他几个点呢,暂时咱们都一样,所以我这块我就我就先这样一下吧,先整个CTRLC一下,在咱们这个student类当中,我先CTRL微过来。如果你这两个方法的这个方法体写的都一样,那就没啥意思了,那就没有必要去覆盖了,或者要重写了,那肯定是我们现在要变了,所以这个位置我们可以简单的写一写,比如说学生啊,这个因为正在学习,所以呢,学生应该多吃有营养的食物。
08:09
有这个营养的这个食物啊,其实现在呢,咱们没有奢求太多有没有营养,只要别吃这种有毒的就行,对吧,这已经要求很低了哈,吃了好多东西发现的这个根本就不靠谱,像最近呢,出的那个一个是全年那个保健品,前段时间又出了一个这个无限极这个问题,这不现在也也爆出来了是吧。啊对,就国家呢,在这个保健品这块呢,可能这个监督力度不够啊,还是怎么样的,这个这个保保健品的一方面这个利润还是挺暴利的,另外里边可能有很多需要这个规范的一些点哈,行,那这块的话呢,我们这个调了一下这个it方法,不是调了这个方法,我们就重写了一下,这个叫父类中的E的方法,大家会发现呢,我们这个方法前面有个小三角,它写的就overr。
09:04
Person里的it方法,哎,说的意思呢,就是我们重写了父类中的it方法。这我们在这儿呢,标识一下,对父类中的it方法进行了重写,好,那重写以后我们再回来看这个测试,刚才我们这个it呢,是掉在这个叫示范负类里的,现在我们重写以后。执行你会发现呢,这时候呢,执行的就是我们子类自己覆盖覆类以后的这个方法了,这就是我们属于方法重启的一个应用层面的啊,那这呢算是一个应用吧,就是重写以后,那当实例化这个子类以后,或者叫创建子类对象以后,通过子类对象去调用,调用什么呢?调用这个子父类中的这个同名同参数的方法时,这个方法时,这个实际执行的呢,就是子类重写覆盖的这个方法啊,当我们通过此类对象去调用子父类中的同名同参数的方法时呢,实际执行的是子类叫重写父类的方法,就是相当于你此类自己。
10:31
宜的,那你说我要是造一个负类的对象,造一个负类的对象,我通过这个负类对象,我去调这个一的方法,那你说是你负类的还是四类的,那显然是负类的了。这跟人家子类没关系了,你自己定义的,那就调你自己的啊,那这个student呢,也是一样,你自己定义的,那就调你自己的,像这个work方法,如果我们没有重写负类中的这个,那是不是就掉负类的对你重写了,重写了我们就可以把这个重写呢,理解成是一个覆盖了,你把它给盖住了,那你执行的就是你自己的了啊,这就是我们说的这个方法的一个重写,就是我们后续在这个开发当中,一会咱们也可以举具体的例子了啊,开发当中如果呢,我们子类继承过来父类的方法以后,发现呢,父类这个方法呢,不是特别吻合于咱们这个子类的功能,这个时候呢,我们就可以对父类当中这个同名同参数的这个方法呢,进行一个覆盖,我们就要它重启了,那覆盖以后,当咱们再去创建子类的对象的时候,那么实际执行的呢,就是你覆盖以后子类重写的这个方法。
11:42
这呢就是关于方法的重启的一个内容,其实呢,比较简单啊,比较简单,那么有了这个点以后呢,这就有一个非常经典的面试题,说方法互相区分,方法的这个重载与重写,这个好答不?
12:05
这个得回答这个题呢,其实挺low的哈,就是很基本的一道问题,但是呢,这个面试的时候呢,确实也会问,因为咱们说了这个面试官呢,他不是说在公司里边,他就天天没事没事干,就是专门用来出面试题的,公司里边肯定不会养这样的人的,这不是说呢,就跟这个每年的考研或者是这个高考一样,说国家呢,每年就是到这个,比如说六七月份高考,他到这个过了年以后,他会专门把这个哪个省的命题人,就把这些人呢,就就圈起来了,就关到这个监狱里边啊,每天呢就供吃供喝,然后呢不干别的,就是出题就研究,题一出出半年,呃,他那里边题的话呢,就得先把这个这个省里边最近十年的拿到,全国的十年拿到,然后呢,研究一下这些题,呃,研究完以后的话开始出题,你想想它出题首先第一个点一定不能出原题吧,对吧,你说诶今年考了一道题,这些题是去年的另外一个省的考。
13:05
题那就废了,那这哥们想再出肯定没机会了,绝对不能出原题,哪怕你变个数都行,对吧,那一个呢,不能出原题,其次的话呢,他得想,你看这道题啊,假设有1万个学生去答,我得希望呢,多少个人得能过,多少人过不了,其实出题还是挺难的一个事儿,出的太难的话呢,去温度不好,出的太简的话呢,去温度也不好,必须呢得保证这个题出完以后呢,得满足一个正态分布。好的呢得能出出来,差的呢也得留到后边,大部分人都得在这儿,这个区分度要好才行,你不能这个大家都都很差这样的,那这个也不行啊,或者说这个都很好也行,也也不行,所以这个出题呢,还是挺难的,这个这是国家的考试这种情况啊。那你要是这个,呃,公司里边去面试,不会有这样的人说的,明天我们要招几个人了,今天晚上把你关起来,然后不能泄密了,没有这回事儿啊,这些人呢,往往他就平时也做开发了,然后呢,这个组里边需要招人了,他正开发着呢,突然人事叫他说咱们今天要招人,或者提前一天告诉他说要招人了,然后呢,你准备准备第二天呢,这个给面试一下。
14:12
啊,那这个时候呢,他就晚上会去想说呢,应该考察点什么问题啊,如果提前告诉他的话呢,他可能坐在这就想我该问点什么题呢,这个时候呢,他可能就会打开百度是吧,搜一下说Java呢常见面试题,呃,然后大家呢,也是第二天要去面试了,你可能也会说,哎呀,这个面试会问哪些题呢?你也打开百度了,然后他在那块看应该问什么题,你这块看应该答哪些题,你俩看的还都是同一个检索的这个顺序是吧?所以呢,你会出现呢,很多题呢,是你前之前看过的,就出现这种所谓的叫高频题,嗯,像这种题的话呢,就是说以前特别高频,高频道都已经都烂了啊,那大家呢,其实也得知道,可能呢他不问,但是呢,这个一旦要人家问到了,说这么高频的题你都不会,那别的可能就更不会了,所以你还得会,就属于这种啊啊,所以有一些高频的呢,大家一定是需要关注的,这个我讲课的时候也会说到,另外呢,等到大家真正面试的时候呢。
15:12
也会给大家去总结一下,讲一讲,说哪些呢,是特别高频的一些问题啊,不是说呢,让你死记硬背了,就是咱们因为没有专门的复习了,不像你高考复习一年的是吧,咱们可能也就两三天的时间整个给大家,大家把这个知识呢整合一下啊,告诉你哪些呢,需要你关注,需要去复习的啊,那么这里边呢,关于这道问题说区分方法的重载与重写,那你只需要呢,把什么是重载说清楚,诶重写呢,又是什么样子的说清楚,作用是什么,具体的细节点有哪些啊,描述清楚就可以了。啊就可以了,然后后边呢,咱们会讲一个多态性,那在多态性这个体线上呢,重载跟重写呢也不太一样,到时候呢,你可以把那个点呢再加进去就可以了,啊也就如此。
16:01
行,那大家呢,先对我们这个方法的重写呢,有一个直观的一个感受,然后接下来呢,我们再说一下重写具体的有哪些要求。
我来说两句