00:00
那讲完这个项目以后呢,咱们接着来讲,那就提到了这个叫继承性,这是我们讲面向对象呢,这个中第五章面向对象的特征呢,第二个首先呢,我们引入了一个问题,说为什么要有类的继承性。总结一下,咱们可以是通过这个图来看,通过这个图来看的,对,先来体页这个图,再再简单回顾一下这个图呢,咱们可以从两个角度上去说,第一个呢,就是从上往下的角度,当我们定义好一个咱们讲了集成以后,就知道这叫负类了,当我们定义好一个父类以后呢,我们可以去定义它的子类,子类呢,通过继承的方式呢,就直接获取到了父类中的功能了。这是咱们从上往下的角度去说,如果从下往上呢,那就说啊,咱们这个开发当中呢,会定一些类,其中呢有些类,比如说就是customer student wait teacher这样几个类,类似的,你可能是比如说讲这个这个银行卡,储蓄卡,信用卡,什么黑卡,金卡等等各种卡,在银行当中它有很多这个产品,那么这一这些卡的时候呢,或者就像这里边这些人的时候呢,发现他们当中有一些功能类似的方法或者说属性,那这时候呢,都在里边去写。
01:18
感觉呢有点冗余,本身有一些共性啊,我们就考虑呢,把这个相同的类似的功能呢抽取出来,抽取出来以后我们封装到一个类当中,把这个类呢,称作叫负类了。或者准确的说,应该是先有继承,然后才有负类,就是你可以说先叫一个基础类也行,先有这样一个类,然后呢,我们让下边这样的几个类呢,去继承你这个基础的类,继承以后,那你对应的这四个类当中,就都具有它这个里边的功能了,我们把这种关系呢,叫做继承关系,这就是类跟类之间的一种关系,叫继承关系,有了这种继承关系以后,我们这个类呢,就不叫基础类了,你就叫一个父类。
02:00
叫父类,然后下边这呢,哎,就像这个人一样,咱们这个你继承人家了,就是这个下一代这种关系啊,叫子类这样一个情况,就是先有继承,后有子父类这个概念,只要一说到子父类,它一定是这种继承的关系,这个大家注意一下,就是从两个角度呢,我们可以去理解,那这个总结一下话呢,就是刚才大家也提到的,咱们也总结到的,就是技能性它的好处,这个呢,大家不要去死记硬背,它就是确实呢,你自己能够去理解。这个更重要一些,像我们说减少代码冗余了,提高代码的复用性了,这个理解吧,对,就是你这个里边这都省着写了,这不就冗余减少,就写了一份这个,这一份呢,不同的类去用这个复用性就更好了,那第二点说便于功能的扩展,或者要提高了这个代码的这个扩展性,就是呢,当我们后边如果每一个类呢,这个功能需要扩展的时候呢,而且扩展的功能都一样,我们是不是直接生命在负类里就可以了。
03:07
对,就扩展起来就更方便了,就更便于去扩展了,嗯,行,其实主要呢算是这两个点,后边这个呢,是咱们讲多肽的时候呢,多肽的一个使用前提呢,就是得有这个继承性,所以这呢算是提供了一个前提,言外之意呢,就是如果要是没有继承性,就没有多肽了。是这样一个关系啊,多肽呢,要想使用它的前提得有继承,是这个意思,行,那画一个图,那就是咱们这个图。CTRLV行真的就是这个图示了行,下面的话呢,就关于这个继承性,我们从这个呃,思想上呢,能够理解了,那具体代码该怎么去体现,这就是咱们写的这样一个格式,这样一个格式,好把这个呢,CTRLC这是这个格式,这个在我们Java里边呢,这个集承呢,就叫extend,这样就是体现了A跟B的这种集成关系,那后边的话呢,就不加区分的去说,叫s class啊,叫子类啊,派生类啊,这都说的是AB呢,就是负类,超类,鸡类,Super class,这都是这个意思,尤其呢,你要看一些这个外文翻译过来书的时候,有些有些时候呢,就叫做超类了,你知道说的还是这个负类就知道了就行,好,那么继承以后,我们这个类A呢,继承ABB了,你不能白让我继承啊,都有一些好处啊,其实就也说了,也说了咱们上边这个事儿了,就是继承以后呢,有哪些不同了。
04:43
咱们在这写了这样的两个点CTRLC一下,这个就写一个叫3.1了。
05:04
好,这个再强调一下,一旦呢,我们的子类继承父类以后,子类呢就获取了,父类中声明的就少个字,所有的属性和方法,这里边都有那个粘过来,有时候就会少这个字,尤其大家需要注意的是所有的属性和方法,这个关于构造器的话呢,咱们后边再说构造器,其实我们不谈就要获取了,而是说呢,你此类可以去调负类的构造器,今天咱们就会讲。那特别需要声明的就是父类中这个所谓的私有的,甚至说呢,也不一定非得是私有的,就是任何权限的属性,我们此类呢,都获取到了,但可能是由于这个封装性的一个影响呢,咱们可能不会直接去掉,但是不不能掉,跟你有没有是两回事,就跟家里边你爸有一个有个秘密的小箱子。
06:00
可能关于有可能是放在他一些钱,也可能是放在他的一些这个独门绝技是吧,或者是他的一些小秘密啊,就是总之呢,现在人家给private了,就私有了,但是如果说呢,从这个继承性的角度呢来讲,你后边呢。说的有点夸张了,就是假设要继承了,什么原因吧,是吧,就给到你了,这个东西还是你能拿到的,你能拿到呢是一回事,这是继承性所要描述的,那么你能不能看,能不能打开,这是封装性所要描述的,它是两个事儿,不矛盾,这个大家注意一下。下边跟他说这个子类集成父类以后说还可以声明自己特有的啊,这只要有它就出不来,这我们是通过测试出来的是吧,只要有九它就有困难啊,还可以声明自己特有的这个属性或者方法实现功能的拓展,所以说呢,我们这个ES叫继承,其实从英文的角度更好理解,就是子类呢,它延展或者叫扩展了这个B类的功能,你有的我都有,然后我还有你没有的,这就是子类的这个特点,行,这个大家从这个思想上呢,你能够体会这样一个事儿,虽然叫子类,但是它比这个父类的功能呢,就更强大一些,好,这呢就是我们说的这个继承以后呢,有哪些不同的点,然后关于这个继承性的一个说明,咱们也提到了下边的一些这个点,这CTRLC一下。
07:29
行,这里边儿呢,主要的这些点的话呢,我们想强调的一个事儿,就是咱们看的这个图,通过这个图呢,大家就能够去说明。嗯。这里边呢,其实含了很多这个丰富的信息,比如说一个类呢,可以被多个子类所继承,一个子类呢只能有一个父类,就是尤其呢,大家需要注意的就是Java中的这个单集征性,主要呢是在类这块,我们叫单集征性,特别强调我这写的叫类的单集征性,因为后面呢,咱们还会讲一个概念叫做接口。
08:06
接口在Java当中是可以多继承的,就是接口,一个接口呢可以继承好几个接口,就是Java中这个接口的特点,在类这块呢,Java中叫单继成性,所以你要泛泛的说说Java是单继承的,实际上呢不准确,只有类这块叫单继承,然后接口是可以多继承的,那么像C加加这样的语言呢,类也是可以多继承的。那功能扩展当然就更强了,一个子类你可以集成好几个副类,那你功能肯定就大大的就提高了,但是呢,在我们书写代码的时候呢,很容易造成混乱,就得你需要很很清晰的知道你掉的是哪个结构,否则呢就容易出错了,这个大家要注意这个情况,咱们也不用去接触这个C加加了,你只需要知道我们Java呢是类的单继承性就可以,那其实呢,咱们也可以继承一个类的,同时让你这个父类呢,再去继承其他的类,相当于间接的呢,又获取到了功能的一个拓展,所以呢,我们把这个student呢叫做graduate的一个直接负类,直接继承于他的,那么间接的呢继承于person,所以我们把这个person呢称作graduate的间接负类,类似的上面,它还可以再有很多的间接负类。
09:18
都叫做它的父类这个意思行,这呢是说我们说的这样的一个概念,那么需要注意的就是子类呢,它的所有的父类的这些功能,主要呢,我们说的属性方法这个类呢都有。就是你父类的父类其实就叫间接负类呢,也都有。就可以行,然后呢,接下来我们提到了一个object,详细的关于这个object,我们靠后点再去说,这个得明天去讲了,那我们这个前一天讲到的时候呢,就提到了,那么你像我们写的这个叫creature了呢,我们没有给大家显示的声明一个负类,但是大家呢,在写代码的时候呢,会发现这个C呢,貌似呢,也可以调用一些它所没有声明过的方法,那我们又没有写它的类,又能调一些这个这个现成的方法,那这块呢,只能够说它从继承的角度获取到的,那这就涉及到了它到底继承于谁,诶我们呢,CTRLT一下就能看到。
10:21
哎,其他的这一类的话呢,只要你没有显示的去声明一个负类的都如此,所以我们这呢,就把这个object类呢,就引入了。Object,这个object的话呢,就就别翻译了,你说这个叫对象类什么,其他什么类,这就不好翻译这个单词了,就别翻译了,就叫object就可以了,叫object就行,这个object的话呢,是一个具体的类,就是一个真实的一个类,这个类呢是Java给我们定义好的,在这个包下。它呢,就作为了所有其他类的负类。
11:00
这个大家这个树结构里边有一列结构叫做这个叫做树形结构,树形结构不管你是这个二叉树,三叉树等等也好,上边最上边呢,这有一个叫根节点。根节点,咱们Java里边这个继承关系,实际上呢,它就是一个属性结构了,那么你这是一个,比如说你这是个person了,Person下边呢,你可能有两个,三个四个,不管你有几个子类,都是这种差的方式呢,给它延伸出来,然后再往下去分,有的呢,这个类呢,目前没有子类了,那它就相当个叶子节点一样,那么所有的这个结构往上再去抽取的话呢,会有一个根节点,这个根节点在咱们Java的这个继承数当中,它就是object,所以呢,有时候也把这个object称作叫根服类,它是所有类的父类。就这样子的,那因为你下边呢,都直接或间接的继承给它了,所以呢,我们object当中就会定一些比较通用的一些方法或者是属性了,实际上呢,它这里边儿主要定义的是方法,属性就没有了,那么这些方法呢,就意味着所有的子类呢,就都获取到了。
12:11
所以说呢,你能不能用,那就看人家object中的权限了,尤其是像object当中定义的一些public权限的方法。简单看一下。Object啊,这个还不对。Object。这个他这我直接写这个还调不出来它了。这样点一下出来吧,这是浪下的,这个叫object,你看这里边写了说class object is root的class class这个单词就是整个是我们这个类的这个继承关系里边的一个根。就知道它是一个根服类了,说每一个类呢,都把这个object作为它的一个super class,这不就是说它是一个负类嘛,哎,从1.0的时候就定义过了,那它这里边呢,定义的一些方法就应该是一些比较通用的一些方法了,这个我们讲到这的时候,明天的时候我们再详细的展开这个object,现在呢,大家只需要知道它呢是我们所有类的一个跟服类就可以了,具油这个油又给没了,行,这呢就是咱们要复习的内容,那今天的话呢,咱们会讲一下这个方法,重写,修复,实例化,全过程多态性这块呢,我们都会讲到。
我来说两句