00:00
好了同学,咱们接下来就继续再往下了啊,再往下了,嗯,那我们上节课呢,说了一下,我们这个方法覆盖这一块的东西啊,大家该记呢,可能还得记一下,有些东西你需要记,我觉得你这个方法重载,还有你这个方法覆盖呢,最好能够怎么着对比着来。啊,就是方案覆盖是怎么回事,什么时候考虑,然后呢,什么条件满足的时候构成方案覆盖,这块也是一样,什么时候我们需要考虑方法覆盖,然后呢,在满足什么样的条件下,我们代码就构成了方法的覆盖,条件1234呢,你需要背会,另外呢,这里的注意事项你要知道。啊,注意事项你要知道,另外呢,这块呢,实例方法什么静态方法不,这个没有覆盖,覆盖没有意义,这个咱们说完多肽之后呢,你才能理解这个东西啊嗯,那行了,那咱们接下来来一个比较经典的一个一个例子啊,就是还是方法覆盖的例子吧。看一个啊,然后呢,如果方案覆盖这块没问题的话,咱们紧接着再往下就看看这个多了,好吧,来看一下方案覆盖啊。
01:03
比较经典的例子,TEST03。大家看一下啊,一个。就是方法覆盖啊,比较经典的案例。Over test03。主方法呢,还是该写写啊。那么这块呢,我们加一个类啊,比如说people。这是人是吧,哎,人啊。那人呢,这块比如说我们有一个。嗯。有一个属性吧,各位加属性也行啊。Name行吧,加构造方法。
02:00
午餐的。有餐的行,咱们给个全点的好吧,啊点name name啊。然后呢,Set方法,Set name。参数是name是吧?Name name get方法get name啊直接返回一个name,好,那么在这里呢,有一个有一个什么呢?有一个比如中国人啊,再来一个类叫做美国人。啊,中国人这个,呃,这个类。标一下啊,这是属性,这是构造,这个是sat and get是吧,然后接下来我们在这这啊来一个people,人一般都会什么呀,都会说话对吧?人都会说话是不是啊,那么这块呢,咱们就来一个方法啊,叫speak。
03:04
说话啊speak,那接下来我们这块呢,就简单输出。输入什么呢?Name啊。正在什么呀?哎,说话啊,点点点啊,正在说话就,至于说什么,我就直接说出点点点就完事了啊,人都会说话,Speak方法啊,嗯。行,那么接下来我给个此类,给两个吧,一个此类是中国人去继承他,再来一个让美国人去继承他。然后中国人这块呢,是class叫什么呀,叫做呃,就叫China people得了啊China people啊此类呢,去继承谁呢,我们的people。继承之后呢,我们中国人说话是汉语。
04:00
是不是,所以子类需要对谁啊,对父类的哪个方法呀,Speak方法。是不是?进行重写吧,那怎么重写啊,你把它拿过来啊,放到这。放到这儿之后呢,接下来呢,我们再来看一下啊,应该输入什么呢?我们中国人说话的话应该是。啊,叫name吧,这个name是谁啊各位。这个name是不是就名字呀,但这个私有的是不是只能在这访问啊?我在子类里面想访问这个name怎么办?能不能调这个方法叫get name。可以吧,This get name啊,正在使用什么呀?汉语进行什么呀?我正在正在正在说,正在说汉语。啊,正在说汉语,谁谁谁正在说汉语。
05:00
Speak。啊,然后呢,如果说你是美国人。America。就这个吧,America得了啊,直接这个得了啊。去继承谁啊people,然后呢,美国人说话是什么呀?是英语。所以子类。需要对父类的speak方法进行重写,重写一定要怎么着啊,复制。啊,拿过来放到这儿。嗯。那这块呢,system.out there line打印,我们输出来叫this get name是不是?当然这个this是可以省略不写的,你不写它也行,是不是空格吧?
06:03
English。行吧,好,那么接下来呢,我们可能需要在测试程序里面创建两个对象,是不是,哎,创建中国。中国人对象,然后我们创建什么呀,美国人对象,那么这个时候呢,我们应该是怎么写啊,叫做China people是不是,哎,然后PE new China people我们叫做什么呀,张三啊,p1.speak。啊,然后创建美国人的话,那就是。People是吧,啊二你有一个,然后我们叫吧,或者肉丝也行啊,杰克都行啊杰克,然后呢,P2点什么呀,Speak好吧,那创建两个对象分别叫speak方法,那这个时候大家想想是不是跟这个就没关系了是吧?那中国人的话,对象的话,那说的就是汉语呗,如果美国人说的是什么呀?啊就是英语,像这样的方法就需要去覆盖了,各位啊,像这样的方法就需要覆盖了。
07:16
来我们来看一下啊Java c呢,去编译一下test03.java Java运行。来我看一下啊,无法将,嗯,有。哦,各位,这有问题了,各位哪有问题哪有问题,各位这个代码写的有问题还。哪里有问题?哪有问题,这里面没提供构造方法是吧,你光在那new呢,是不是new一个China people这块传一个参数过去。嗯,这块是个无餐的啊,这块是一个有餐的是不是。然后这边怎么着啊。
08:01
没有构造方法吧,得给一个构造方法,是不是你不给构造方法不行,或者这样吧,各位,咱们现在呢,呃,要在这个位置提供构造方法的话,我们在里面写代码只能怎么写呀。还不行。这块你要提供一个构造方法的话,你构造方法里边怎么写呢?还得用super,这个super咱们还没有学。Super括号的这种语法啊,还没有学各位,所以这块呢,要么你怎么做呀。你去调set name这个方法,是不是你说this set name这个方法,把这个name传过来,这个name传过去调set name这个方法给它赋值,这样也可以啊,也可以。但是呢,我们现在先不这么干了,在构造方法里边调这个set方法,其实嗯不太不太好啊,不太好,嗯,明白我的意思吧,各位为什么现在这个程序不行啊,编译报错呀,为啥呀。
09:01
编译报错,第行和第九行编译报错。第五行是什么?是这个对吧,第九行是哪个,是这个,你new的时候调这个构造方法,这个构造法在China people里边没有吧。你这个American people的时候,你这个构造方法在American people里边是不是没有这个构造方法呀。你都没有构造方法啊,所以你调不了,所以这块咱们改成无餐的行吧。改成无三之后呢,p1.stem吧,行吧,这样做吧,这样改一下可以啊,就刚才我说一下这个错误的原因是什么。错误原因。没有这样的构造方法。是不是啊,另外构造方法也不支持继承啊,这块呢,是错误原因吧,这错误原因也是一样,没有什么呀,这样的构造方法吧,那没有这样的构造方法,有没有无参构造啊各位。
10:01
就无参数的构造方法有没有啊,肯定是有的,对不对,哎,无参构造给一个行吧,然后呢,给了之后呢,你无参构造不是给这个name没有赋值吗。是不是,那你就调呗,是不是PEPE的话是China people China people继承people people里边继承这个s name方法,所以我们可以在这调s nameme.s nameme是不是,哎,我们叫张三呗,然后呢,接下来我们这块呢,American people people are。我们拿过来也是调用什么呀,无参数构造方法,调完之后呢,接下来我们在这调P2的什么呀,Set name这个方法,然后呢,给它写成叫杰克行不行,好,那这样的话这个可以了,各位啊,加va c呢,去编译一下我们这个程序。Java c呢,去编译一下我们这个程序啊,编译完之后呢,Java去运行,我们叫做over test03走。张三正在说汉语Jack Jack speak English是吧?嗯,Jack speak English啊好,这个程序就是,呃,非常典型的一个方案覆盖的一个案例啊,方案覆盖的案例这块呢,我再强调一下啊,刚才我们在写的过程当中出了两个错啊,这个错误的原因我刚才解释的很清楚了,因为调这个构造方法在这个里边没有。
11:17
啊,只有无参的,只有无参的是不是,哎,所以说这块的话,咱们得,哎这样调一无参的构造方法,然后呢,调塞的方法给它赋值啊调有参数的,这个不存在啊,有参数不存在,那刚才我还说了,有一种方式是你可以在这里写一个有参数的报导方法,对吧?但是你要写的话,这边你调什么呀?调这个set name这个方法是不是给它赋值啊。我说这种方式不好,以后我们可能会使用super括号,这种方式我只是提了一下,以后咱们再看,好吧,现在这个问题已经解决了,咱们就这样就行了啊。
我来说两句