00:00
好了,那咱们继续看final修饰的方法,那如果说现在啊,我在这里啊,我有一个class啊,C我随便写啊class c里边呢,有一个方法,这个方法叫do some。然后紧接着呢,这个do some方法呢,写完之后呢,Class d呢,去继承谁啊这个C,然后紧接着呢,我们对这个方法进行覆盖,覆盖呢,我可以考虑把这个方法复制一下贴过来,你看这是方法覆盖嘛,是不是?哎,你原先比如说C他们点out.out.printline打印输出你说C的什么do some对吧,然后这块是did的do some system.out.out.print line。输出输出什么呢?叫做did对吧,Do some。那么这块呢,我们父类在这儿子类呢,去继承了父类,接下来如果说我在这个方法的修饰符上加一个final呢,那会是怎样的呢?我先不加,我先来编译一下,我们来看一看是怎样的来编译你看。
01:03
是不是通过了。是不是,哎,通过了没问题,但是这个方法呢,我不想别人覆盖我这个方法,子类呢,你去继承我的父类之后,我不希望你把这个方法给它覆盖重写。那么这个时候我加一个final好使吗?来,Final表示最终的,就是表示这个方法是最终的,你没有办法对我这个方法进行重写,来我们看看。说D中的do some无法覆盖C中的do some,你看说的多清楚,说D里边的这个do some没有办法覆盖,C里边的do some方法被覆盖的方法为final,就是你被覆盖的这个方法是final的,这样的话你在这里就不能覆盖了。所以你看。你看你就不能覆盖了。是不是,所以这样写才可以啊?对吧?哎,所以说在这里我们又讲了一个语法,叫什么叫final修饰的方法,Final修饰的方法无法被什么呀?哎,被覆盖啊,被重写,哎又学了一个知识点,你看开心开心是不是,哎一个是final修饰的类无法继承,Final修饰的方法无法覆盖啊,无法覆盖好了,那至于说老师我以后到底说我这个方法呢,加不加final呢?哎,那还是那句话,以后我们看合适的案例,合适的项目以后呢,你可能会自发的怎么着啊,不用杜老师说你就自然而然的是不是,诶在这个方法前面加了一个什么呀,哎,Final。
02:29
对吧,哎,因为怎么着啊,你怕别人改变你这个方法。你怕子类们改变你这个方法?下下下面加个分干嘛。下面加个分。你不能覆盖你这个干嘛呀。下边方法你加个干嘛。来。我们来看一下啊,你根本轮不到这一步吧,轮不到你家final吧。就压根儿还没有,还没有加final之前就已经出问题了吧。
03:03
是吧,哎,来走。是吧,不允许。不允许不是你加不加final的事儿,就压根你这个就根本就不允许,就不允许你写啊,这轮不着你在这写明白吗?哎,不过你也可以自己折腾折腾啊,折腾折腾就final修饰的方法,无法被覆盖或者是被重写。Final修饰的类无法被继承。Final其实就主要就是表示啥,表示最终的不可变的,你看现在非常明显透露出最终的不可变的,至于说以后什么时候我们内上加final啊,包括我们什么什么时候方法上加final,哎,你以后自然而然其实就会了啊,就会了,到时候你比如说我在业务当中啊,我说嗯,这个方法呀,我不希望我的子子孙孙啊,给他改了,我希望干啥呀,我希望这个一直祖传下去。我不希望任何人怎么着改我这个东西。啊,在现实生活当中,其实也有这样的。
04:01
对吧,你说你你比如说某一个家族在留在这个,呃,这个这个这个这个这个呃,遗传什么的,遗传遗传或者是传这些东西,传一些家的一个,比如说秘方是吧,这个秘方这个东西你不希望干什么呀,不希望他的这个你的子子孙孙去去改掉你这个秘方是吧?啊不,不需要对他进行改进,那这个时候你可以可以加一个final啊,加一个final,这样的话,别人谁都动不了啊,就是谁都动不了啊,不动产行吧,你看随便啊,怎么理解都行,怎么理解都行啊好,这是final修饰的方法,各位啊。呃,那我把final给它去掉,不是可以改了吗?嗯,对呀,没问题呀,Final去掉的话,你子类去继承覆类之后,你可以对方法进行覆重重写覆盖啊覆盖就等于改改了吗。对吧,因为你将来此类对象执行这个方法的话,你执行的是什么呀,重启之后的方法吧。是不是,哎,你你final如果去掉,你想想。
05:00
你是不是就可以覆盖了,没问题啊,这是咱们之前讲过的呀,你看。没没没问题,你看改了,你看原先输出c.do some,现在输出d.do some。但如果你加个final就不行了。你如果在前面加个final就不行了呀,你看。啊,来走。嗯。看到吗?不行。你覆盖覆盖不了。所以这块你这个代码啊不能写。不能写啊,哎,不能写这个行,那这个final修饰的方法咱就不能被覆盖呗,是不是哎。父类没有final。去访问有final的子类特有的方法可以访问吗?去访问有final的子类的特有方法配方法,父类没有final。父类没有烦恼。呃,父没有烦恼。嗯,去访问。有final子类哦,可以呀,没问题没问题没问题啊。
06:06
去访问final的子类特有的方法,那不行啊。你凡是访问子类特有的方法,你都得强转吧?你看这个类不是没有final吗?我现在在这写个方法叫public。对吧,VO do。你就加不加final他都访问不了。林动,我说一下啊,你加不加final它都访问不了,来你访问一下来。我先不加final啊,这不C吗?D继承C吧。是不是?哎,我们在这儿写个写一个什么呀,问方法。我随便写一个啊。Say。C6D,这是不是多肽?
07:04
多肽,哎呀多肽啊。输入法有问题。切一下啊。好多肽,那你塞点多也不行啊。在不在?来。大家看啊,C是什么类型,是这个吧。哎,这里面有多的方法吗?没有吧?是不是没有多点方法,你C点多点是不是掉不了。你没有final你也掉不了。啊。除非说你这样,你说DD6D,那你这样调可以调啊,没问题啊。你D可以掉啊。对吧,调多点可以啊,没问题。
08:04
是不是你上面这个有问题,下边就没问题啊。不用多肽型啊,不用多肽可以。是不是这都在这就报错了。因为编译器报错呀。编译器认为什么呀,C是。认为。C是什么呀?是C类呀。是吧,哎,C类中没有什么呀,多的方法吗。是不是,哎,你编译一下你看。是不是第56行找不到符号啊,第56行找不到符号,说这个方法没有。没有多的方法。说你C这个类里面没有多。对啊。C里没有图调不了啊。跟这个final final final没关系。
09:02
你想调,你可以强转向下转行吗?调用我之前一直在说叫调用子类中特有的方法。十需要向下转型吗?是不是你想调这个多瓦,那你可以调,你这样调呗,你这不是C吗?你只有D,是不是才有多瓦点方法,你得把C转成D吧。你把C转成D呗C。是不是转成什么呀D呀。D呀,对吧,你转一下呗。这可以啊。对吧,但是在向下转型的时候,我们要有个好习惯,就是如果你c instance of d。如果你C确实是个D类型。对吧,你这个C确实将来是个D类型。就是C啊,指向的对象,如果确实是D类型下转型呗。
10:05
对吧,啊下转型。转型你可以掉啊。没问题啊,这就是回到多肽里边了又。啊对对对对对,林队说的对,可以下转型,这不下转型吗?CC66D,然后转型了是不是可以调。对不对,你看可以掉了编译。对不对,哎,没问题啊,你加个final也没事啊,你加这个final有有有啥影响啊,没有没有影响啊。加没有影响,你该咋该咋地咋地啊,还还跟以前一样,你看没有区别。记住,Final final只是起到,不是说你能不能调用的问题。Final不管你调用的问题啊,哎呀,咱们同学们又学偏了,学着学着又跑偏了,Final控制不了。
11:00
能不能调用的问题。啊,管的是啥。啊。Final管的是啥?Final管的是最后的,明白吧,Final修饰的表示最后的。不能变的。不能改的。啊。就是你这块我能不能调你这个方法,我能不能调你这个方法,他final管不了这个事儿,Final只是管是说我我修饰了你,你就不能变了。就这意思啊,就这意思,你不要不要不要不要学,学偏了跑偏了啊,跑偏了final控制不了,能不能调用的问题啊,Final管的是啥?管的是最后的,不能变的,不能改的,就这意思,Final修饰类不能继承,Final修饰的方法不能覆盖。
12:00
也不能重写。对吧,哎,那行了,那咱接着再往下吧,啊再往下那这块还有什么呀,叫final修饰的变量。这个我其实就可以删掉了啊。啊。改一下编号三。四。五。啊,Final修饰的变量,你猜,我让大家猜,然后class final test01。啊,然后我们写上主方法。Public static voidman。你先想想啊,我们刚才讲的啥呀,翻动修饰的类和翻动修饰的方法吧啊。
我来说两句