00:00
那么第二个点清楚这个事以后呢,咱们就得回到这个代码层面呢,来看一看,具体这个继承性应该是怎么回事,上面呢,这个好处相当于是咱们解决了一个叫Y说为什么要有集成性。啊,因为它有这样的好处,所以呢,我们才要用它,就跟说你为什么要有女朋友,你得想想有女朋友以后有什么好处,然后呢,就是为什么要有是吧?哎,这也很容易的一个这个理解啊,那下一个问题呢,就是什么是这个继承性怎么来体现的,诶咱们这块呢,说就是这样子来体现的,就这样子来体现的,这个格式的话呢,是这样子的。继承性的这个格式算是我这呢写一个class,我这写个叫A吧,哎,让他呢去extend这个单词得会念extend,你不不用跟读啊,这就是B自己心里边这个念一念啊,CE,这个class aces b后边呢,你这个大括号里边去声明结构就可以了,原来呢,我们没有这个结构,现在呢是多了一个这个结构,嗯,那么这个结构呢,其实就是这个继承性的一个体现了,这个里边呢,我们接着来说一说,有了这样的一个结构以后呢,这个A我们呢,自然而然的就把它称作叫子类,或者有的书上呢,也叫做派生类,这个英文的话呢,叫萨class。
01:33
这呢,我就没有必要都写成这个大写的了啊,就是一个英文的说法,然后这个B的话呢,自然而然的呢,就叫做负类,或者也叫做超类,或者也叫做鸡肋,这个这个这个鸡肋不不是这个鸡肋这个啊啊,那英文的话呢,叫做super class,如果要是音译的话呢,就是这个超类了,咱们的习惯上叫这个子跟父,其实比较形象。
02:05
就是上边是一个父类,下边是个子类,我们通过一个箭头的方式表示继承,就像你家里边这个家谱一样,上边一代呢,肯定是你这个父辈的,所以就是父类,这呢叫做子类,就这样的一个关系啊好当我们通过这样的格式声明以后,有什么好处,这是我们说的继承性的好处,这呢是从那个代码层面的一个体现。体现就是一旦子类A继承父类B以后,这个子类A中就获取了父类B中声明的结构。生命的这个结构,这个结构呢,尤其或者主要呢,我们指的就是属性跟方法,这个构造器的话呢,这个那就看你怎么理解说叫获取这个词了啊,获取的话呢,其实就相当于我们子类里边呢,当你去造对象的时候,我通过子类的对象是可以调这些所谓的属性跟方法的,那构造器本身呢,你是造对象用的,涉及不到说去通过对象去调那个构造器了啊构造器呢,咱们稍微靠后一点提到那个super关键字的时候,咱们再详细展开说一下,这里边儿呢,大家主要呢,来体会一下,属性跟方法一旦提升以后呢,我们此类呢,就获取到了副类中声明的属性和方法。
03:31
啊,是这个意思啊,就获取到了这样的一个结构,获取到这样结构以后,那我们来测试一下啊,刚才呢,测了一下这个方法了,这俩没问题,属性呢也没问题,那有的同学可能会想这两个事情,什么事情,我在这个person类当中将我们的age,你看这个age,首先说这两个呢,权限目前我们都没有考虑,咱们在这个student当中呢,比如我想用一下我这呢,比如说public VO,我写个授方法,在这个授方法里边,我们去打印一下说name。
04:08
加上个name逗号age。加上一个A,显然这两个属性呢,都是来自于负类的。我们呢,由于由于你继承了,我直接呢在这就相当于就有了这是这个事儿,然后的话呢,我们再回过去看这个person,这个person的话呢,我这两个属性呢,现在权限其实都不小,我呢把这个age呢改成private了,权限就变小了。改完以后我们发现呢,在这个位置呢,就报错了。这个位置呢,就那出现这样的情况了是吧,就报错了,那这时候问说我们声明为private的这个age属性student到底有没有继承呢?到底有没有继承呢?就是刚才呢,就涉及到这句话到底对不对的问题了,说这里边刚才说了,说一旦子类继承负类以后呢,就获取到这里生命生命的结构了,那尤其要说的就是私有的怎么办?大家呢,有的会觉得说继承到了,有的说没有,那结论呢是继承到了,继承到意味着什么呢?就意味着呢,如果我们去拗一个学生,意味着呢,就是这是站,这是堆,我们这儿呢,有一个叫S1,我拗了一个对象,既然你说继承到了,那就意味着在堆空间当中。
05:42
就应该有这个属性,那就意味着像name啊,Age啊,包括学生你自己这个major啊,都应该有,这才叫集成道了,如果你要内存中都没有,那就不叫集成道,那咱们证明这个事儿。诶,有同学提到了,就是我这个person里边这个属性是私有的,我们呢,下边比如说咱们去提供这个get和set方法out shift s,我这样调一下,我只先提供一下edge的。
06:12
提供好以后,那你那问啊,你说这两个公共的方法,我们留在那里边儿有不。有算是获取到了,那获取到了我不是就可以调啊,你看你这person自己都调不了是吧,然后呢,我能掉了,我是不是就可以S一点,你看啊,我去先set下age,我写了个十。然后呢,我可以再输出一下一点get一个A,如果你要是没有继承到那这块呢,你去设置去获取,是不是肯定就会出错呀,嗯,但事实上呢,我们执行。这个在这报错了,这个是另外一个代码的问题,这块不能掉了,你这块呢,因为人家私有的了,这个我也得是不是改成叫getage啊这样想,然后回过来我们再再在这儿还有一个位置。
07:01
这个位置也一样,这个呢,这个既然写了,那写了我们先保证它不错吧,我这呢就写一个set,先先这样放着。先这样啊,然后回过来,我们在这呢,去set一下这块呢,去get一下我们执行。你会发现呢,诶没有报错,其实通过这儿呢,就能够证明私有的属性呢,实际上呢,也获取到了。只是呢,由于封装性的影响,不可以让它直接掉,诶是这个原因造成的,那方法也是一样,大家看这呢,是不是有个叫sleep。我把这个sleep我改成private了,那你说我这个所方法这个子类当中算不算获取到了,实际上算,实际上算,比如说呢,我在这个位置,你不能直接掉了,是我就不直接掉了,那如果说呢,像比如说我们这个sleep,我在这个it里边我调了一下。
08:06
这个it呢,又是一个public的了,我们在这个这个student这块呢,我调it,你会发现这个it里边呢,我在上边这个加一个换行。看这个下面这个操作,你会发现呢,在我们这个里边,它又掉过这个sleep,那说明呢,就是有你要没有的话呢,这个不就该报错了吗。所以通过刚才这样的一个演示呢,大家更深刻的去理解到这个子类呢,集成负类以后,子类呢,就获取到了父类中声明的这个所有的属性和方法,这样来说吧,这个声明的所有的属性和方法,构造系这块呢,我们后边呢,讲到这个super的时候,我们再给大家去强调,实际上构造器的话,你可以用,你可以用,但是你不能理解为说把复类这个构造器相当于CTRLC一下粘到这。
09:05
这肯定不行啊,咱们构造器都得与类同名的,是这个意思,好,这个大家就要体会一下,尤其我们这块强调一下特别的,特别的就是父类中声明为这个私有的这个属性或方法,那么子类继承以后,继承父类以后。仍然认为获取了父类中私有的结构。我确实获取到了,但是只是由于只是因为我们讲的这个封装性的影响。封装性的这个影响,使得我们这个子类呢,不可以直接调用这个私有的结构。使得此类不能直接调用这个负类的这个结构而已。
10:07
就是说呢,你不能说有了这个继承性以后,封装性呢就被打破了,那不合适了,大家定义的这个规则呢,互相矛盾不行,封装性呢,想解决的就是说我们这个结构的一个可见性的问题,继承性呢,解决的是我能不能拿到你里边这些结构的问题,那继承呢说都能拿到,拿到都能拿到,但是拿到以后呢,能不能掉,那还得看你封装性就是大家呢各司其职,你解决你的问题,我解决我的问题,咱俩呢不冲突,哎,是这样子的。好,这呢是我们说的这个事情啊,那么此类呢,继承了父类就能够获取这样的结构,这呢就相当于它自己就有底了,有这个加底了,那么我们说除此之外。这我写一个,这写一个2.1,这样这写一个2.2说呢,这个子类继承父类以后,或者叫子类,嗯,行,继承父类以后,我们子类呢,实际上在父类的这个基础之上呢,是不是还可以定义自己所特有的一些属性和方法呀,嗯,子类集成父类以后,还可以定义或者叫声明自己特有的属性或方法。
11:29
就是通常的话呢,我们这个子类呢,继承完以后呢,像我们这里边major,包括这样的方法,都是我们自己又额外定义的,UI定义的,又好比呢,我们这里边像客户,客户的话呢,他继承这个person类,拿到他的一些属性方法之外,他呢可能还有他自己所特有的一些客户相关的一些功能,老师呢,可能还有教学相关的,这个还有一些服务等等相关的一些功能,所以我们在这个负类的基础上,还可以再去实现功能的扩展。
12:04
哎,实现。功能的一个扩展。那么从这个角度上来讲,那问大家是这个父类比较强大一些,就是功能上来讲啊,是功能强大一些,还是子类功能强大一些呢?对,应该是叫子类,也就是说呢,这里边儿我们说的这个子类和父类的关系,它呢不同于大家上高中学的那个叫集合和子集的关系。这个呢要要清楚,就咱们以前上高中讲过这个集合,这是一个集合,比如说里边呢,有这个数,1234这四个元素构成的一个集合,然后呢,说把三四呢,你圈起来,这可以看成是外边这个大集合的一个子集,那个时候呢,你这个子集是不是它的丰富性啊等等,是不是肯定赶不上这个集合度呀。对,但是现在呢,其实反过来了,我们这个集合的话呢,这个集合呢,有点像我们这里边儿这个啊啊不能这样,就别这样说了,就是这个父类的话呢,它反而这个功能呢,要单一一些,子类呢,继承它以后的话呢,它还可以再去拓展。
13:14
是这个意思,嗯,有点像这个,嗯,大家看那个科幻电影里边那个异形一样,有的可能没看过啊,就是疫情的话呢,就是上一代,然后他又出生了一代,然后下边这一代呢,它就又进化过,就是你又下一代呢,它就比上一代呢,就是功能更丰富啊,是这样的意思啊,你也没有必要说这个老师说了这个去看看异形能更好的理解这个不用看啊,不用看,听一下就可以了啊,哎,这就是这样一个情况,实际上这个情况呢,通过人家这个关键字呢,能够特别好的体会出来,这个呢叫extend,咱们呢,中文翻译成叫继承了,实际上也很形象,就继承以后呢,你就知道什么意思了,那这个英文中的这个CE呢,它的意思呢,叫做延展,延展扩展,这你就知道了哦,这个类它。
14:14
它扩展了这个类的功能,所以说呢,这个子类呢,这个功能上,功能上来讲呢,它就更强大一些,哎就是这样的情况,行这呢是我们说这个继承的一个基本的内容。
我来说两句