00:00
那接下来啊,咱们就来展开说明一下这14个新的性,那刚才也提到了,我把这14个新的性呢分成了两波,那一波呢成为呢叫主菜,也就是说呢,对大家开发当中影响比较大的一共是有六个,那另外的八个呢,我称为呢叫配菜,就大家呢整体上做一个了解就OK了,那除了这14个之外呢,后续还有一些添加或删除的一些项,咱们做一个说明就OK,那主要呢,大家需要关注的是这六个,那我们一个一个来进行说明,第一个呢,是在GP360这样的一个编号当中进行的说明,这个呢叫做s classes。那称为呢叫密封类,这个呢,在我们之前的啊,这这个新特性当中是没有提到过的啊,这呢是首次出现,这呢是一个preview,也就是呢是一个预览板,刚才呢我们也提到了什么叫预览版,现在来说是比较稳定的了啊,只不过呢不是一个正式版而已,那我们使用seal的这个关键字啊,虽然说呢叫做密封类啊,但是呢也可以用来修饰接口。我们使用C的这个关键字呢,去修饰一个类或者这个接口,目的是什么呢?目的是为了限制它,呃,你要是从类的角度呢,就是限制类呢被继承,从结合的角度来看呢,就是限制接口呢,被其他的接口呢实现,那就是这样的一个概念。
01:17
啊,这样的一个概念,好,那下边大家会看到说我们提供这个呃特性的目的包括什么,目标包括什么呢?咱们以前呢,说这个类或者接口呢,是允许被这个此类或者实现类呢所继承,或者叫呃子接口去实现的,对吧?那如果我们不希望呢,他做一些继承或者实践操作呢,咱们可以通过是不是访问权限修饰符去做一个限制,对吧。或呢,我们必要的去加上一些final的一些修饰,那保证你这个类呢就不能被继承了,或者呢,想通过权限修饰图呢,你这个类的这个可访问的权限比较小啊,通过这样的方式呢,去做一些限制,那现在呢,我们有了这个私有的之后呢,可以增加了更多的方式啊,来进行这个继承,或者是时间上的一个限制。
02:03
啊,为我们后续呢,做了一个模式匹配呢,就提供了一个更好的一个前提啊这个咱们后话再说啊,那首先呢,咱们做一个呃,这个一个描述啊,咱们在Java当中呢,这个类的层次结构呢,通常是通过这个继承来实现啊代码的一个重用的,对吧?啊父类呢,被此类所继承,OK,这不用多说了,但是呢,这个类的层次结构的目的呢,并不总是被重用代码。那这里边呢,给大家举例子了,比如说这个图形库所支持的这个形状的类型,或者是金融应用程序支持这个贷款类型等等,那当以这种方式呢,是使用类的层次结构的时候呢,我们就需要呢,限制这个词类级啊,去限制哪些类去继承我们刚才提到的这样的里边的一些类啊,从而呢简化这个建模,那当我们需要去限制此类继承的这个行为的时候。啊,像我们说呢,你要把一个类呢,加上一个final,它就严格的没有子类了,但是有的时候呢,我们并不是说这个类呢,它就不能有子类了,而只是说呢,它只能有这样的两个子类,它呢不能有别的类去继承类,它那这种行为我们怎么去实现呢?这里呢,就可以用我们这个叫S的class啊去声明,那我们用SE的呢,去修饰一个class或者是一个interface啊,就能够限制它被继承或者是被实现啊呃,那同样的下边又提到了,说我们修饰完以后的话呢,能被哪些结构呢去继承或实现,我们再用这个permit啊来去修饰就OK了。
03:30
好,下边呢是一个举例子,那咱这呢,直接就通过代码呢来给大家做一个说明,哎,那为了我们简化这个说明的过程啊,这呢我创建了几个现成的类,对于大家来讲比较简单,这个类呢叫做person类,它呢有三个直接的子类啊,Teacher student,还有worker,那其中这个student呢,又有两个它的直接子类,那一个呢叫middleschool student,就是中学生,它呢叫graduate student叫研究生啊这个整体结构呢非常简单,那目前呢,我们这个person类呢,诶它呢是一个public权限的啊,我们没有限制它的一个继承,对吧?那当我们把这个person类型的class呢声明成一个S的时候。
04:09
大家看。那生命成SE的时候呢,就是我们把这个类呢,相当于是做了一个密封的操作啊,密封的操作,所以呢,你会看到当我们再去继承person类的时候呢,这三个类呢,就报错了,那他们就报错了啊,那这时候怎么办呢?我们在这个person后边呢,哎,加上一个叫promise,允许他被teacher这个子类那一呢叫做student。那这个词类以及呢,我们叫做worker。啊,这样子类呢,做继承啊,所以呢,我们这后边呢,就带的能够允许继承person类的这样的几个类。那加完之后呢,大家会发现呢,怎么还报错呢,哎,这里边就提到了一个点,就是说我们这个直接那继承于啊蜜蜂类的这些此类呢,他们也需要用相关的一些关键字呢,去修饰哪些关键字呢?那大家看这里边就提到了,你这个子类呢,需要是final的啊nu sea或者是sea。
05:07
就是既然你使用这个密封的行为了,那下边呢,你这些此类呢,也需要做一个指明,比如说我们这个teacher teacher的话呢,我们说严格的就不让它再有此类了,所以我们在它前面呢,你可以用一个final去修饰。啊,咱们以前也讲过final啊,那teacher类呢,就不会再有此类了啊,拒绝他的一个,哎,这个代码重用,那对于student来讲的话呢,我们说诶希望呢,它还可以再有此类啊,但是它这个此类行为呢,我们还会有一个密封的限制,说只能有两个此类,一个呢叫middleschool student,一个呢叫graduate student,那这个时候呢,大家就可以把我们这个student呢,同样的声明成是一个叫做suit。对吧,哎,把它生明成是一个密封的,然后密封以后呢,我们也只能够允许他被啊,就是中学生的这个类。啊,以及呢,我们说graduate student这个类啊,所集成。那这就是密封的一个行为啊,只能指明指明这两个的子类,那同样的话呢,这两个子类的话呢,也得有修饰,像咱们刚才呢,哎,是不是用过final修饰对吧,表示呢,你这两个词类呢,就不能再去有此类了。
06:13
啊,这长你就用final去修饰就行。能清清能能清楚对吧?啊,这个呢,就是破类,这个子类呢,不能再往下延续了,然后这个子类呢还能往下延续,但是严格限制只能被这两个子类所延续,所以呢,这两个加上他俩呢,又不能再延续了,OK,然后下边这个worker说worker呢是一个工人,工人这块呢,我们说希望呢,他还能啊,如果你要不希望他被延续,你就奋斗,希望他被延续。希望它被延续呢,分成两种情况,一个呢是有限制条件的延续,还有一个呢,就是没有限制条件了,就像我们以前呢,造一个这个类啊,它可以,只要权限允许,我们可以被任意的子类呢去继承是吧,这时候呢,我们还可以用这个叫那。哎,耐去修饰。那此时的我们这个worker呢,就不是一个密封的一个类了。
07:02
那不是密封的这个类呢,就跟咱们以前声明一个类是一样子的啊,比如说这里边儿我们就声明一个比较railway啊,铁路的一个worker。那让他呢,去继承于咱们的这个博客。啊,大家会看到啊,这个我们叫铁路工人对吧,大家会看到这个时候呢,我们这个railway worker呢,去继承于我们这个worker,它就没有任何的错误信息去报出来了,就是它就相当于我们原来呢,比如说你不加这样的一个修饰,那样的一个情况一样啊,所以这里边儿呢,我们需要总结一下啊,我们为了大家更好理解,那我这块画一个person类,它呢有三个,那我们只允许它有三个具体的词类,这个呢叫做teacher。这个呢叫做student,这个呢叫做worker,对吧?然后这个teacher的话呢,就不能再去继承了,那就final一下,然后这个student的话呢,它还可以被继承,但是呢,严格限制它只能被两个具体的子类呢继承,所以呢,它又是一个field了,哎,一个叫middleschool student,一个呢叫graduate student,这两个呢,哎,不能再被继承,就final了啊,当然了,你也可以继承,那你就别加final,哎,你去加哎这个suit或者是na suit是吧?呃,这个work的话呢,就是跟我们以前一样,可以被任意的你需要的这个子类去继承,那你就给它生明成一个叫做none suit就可以了。
08:15
好总结一下的话呢,就是生命为seal的这样的一个类,它的这个此类呢,我们通过promise呢去修饰。啊,去声明对吧,此类呢,这样声明,那除了这三个类之外,你剩下的这个类啊,比如我们现在再去声明一个class,比如叫doctor啊,一个医生,那这个医生呢,如果你再试图想去继承我们这个person类的话呢,大家会发现呢,这时候就报错了,因为呢,我们这个person类呢,是一个密封的类,他呃没有promise,你这个doctor的话呢,你就不能够去继承于它。对吧,就不能够去继承给它了啊,然后接下来的话呢,我们这个子类啊,这三个子类呢,必须使用final field或者na SE的其中之一来修饰啊,这个呢我们就说完了,这个呢,就咱们比较重要的一个特性叫做避蜂类,大家看到是pre的啊,未来呢,我们一定会固定下来,大家呢就可以使用它了。
我来说两句