00:00
那么行了,同学,咱们继续再往下,我给大家出个题目啊,你分析一下,比如说我public static VO m4这个方法,然后呢,叫inter型A啊,Inter型B,接下来我在这位上再加一个public y的M4啊,然后接下来我叫特类型的X和特型Y,好分析一下这两个方法有没有发生发生重载。分析分析啊,以下两个方法有没有发生重载,你看一个是A,一个是B对吧,一个是X,一个是Y。有没有啊?哦,没有,你看大家这个还是比较敏感的啊。因为我曾经给大家讲过,讲过一个什么呢,就是说方法参行参当中起决定性作用呢,是后面这个名字还是前面这个类型,各位我当时怎么讲的。我说起这个定这个方法的时候,我说是参行参行参里边起决定性作用的,是不是是你这个变量的一个类型起决定性作用,至于你这个变量的名字是不是可以改啊。
01:10
对吧,所以你这个方法和这个方法是不是长得就是一模一样了,如果你在同一个类当中,你定义了两个完全一样的方法,有说老师这咋一样呢?这个是AB,这是B,这是X,这是Y,不一样啊,哎,我说了跟abx y没关系,跟前面类型有关系,你是int,你是int,你是int,你是int,接下来你在这个位置你调了一下M4方法,你想一想,一逗号100传进去,那你这个一和100都是int类型,那到底是调这个方法还是调用下面这个方法,Java虚拟机是不是也懵啊?是不是,哎,所以这种语法根本不会让你通过的,这不叫方法重载啊,叫方法重复了。方法重复了,各位编译报错了,好比你说在这有个int I等于100,然后你就写int I等于200,哎,两个I变量不能重名,我很早以前就说过,两个I变量,两个变量的名字是不能重名的,你你现在在这个同一个类当中,你写了两个方法,这两方法长得一模一样,是不是就重复啊,所以你看就编译报错,根本轮不到运行啊,编译就报错了,你看。
02:14
说呀,那个那个那个啥,那个71行错误已经在这个中定义过,这个M4,你看你看人后边怎么说的,你看。人说已经定定过M4INT int了,你干啥在71行又来这么一个东西。就你看人们在这个里边已经定义过M4INT int了。哎,你看说的多好,多生动是不是,哎这块呢,你看。已经定过了,你71行干啥又定一次,所以这个不是方法重载啊,是方法重重复,编译器报错啊,编译器报错了,编译器报错了啊,不是重载,这是重复了啊,呵呵啊,是重复了啊,重复了。重复了,根本根本不能这样写,不能这样写啊。
03:03
好,这是关于我们所说的这个重载这一块的一个内容啊,那还有什么样的知识点呢?就是方法重载跟前面的这个返回值类型有没有关系,你比如现在我在这写一个方法,或者public static VO m方法吧,M5这个方法呢,我干啥呢?我故意让他返回值是in。然后接下来我再来一个public sta啊,我是类型是M。哎,大家以前应该学过啊,如果方法有这个返回值这个地方,如果不是Y这块得写一个什么语句啊,各位还记得吗?写个return语句吧,哎,我反馈个一啊,然后这块呢,我反馈什么呀,1.0,哎,你说这俩方法能区分开吗?Java虚拟机。Java编译器能把这两个方法区分开吗?就是方法名一样。方法名一样,参数列表也一样。就是反回值类型不一样,你说这两方面有没有方法重载?这两个方法有没有发生重载呢?
04:06
重载了吗?贵军说重,重载了,治皇说,也是重载了。重载了。我之前讲过一句话是怎么说的,同学们,你你有没有,有没有,到底有没有记笔记,我之前讲过一句话,我说这个方法呀。他执行结束之后,有有有这个返回值对吧。我们调这个方法的时候,这个方法执行是不是有反馈值,那我问你这个反馈值,我们对于我们调用者来说,假如说我们在问方法里边去调用你这个方法。我们这个方法有返回值,这个返回值我是不是可以选择要也可以选择不要对吧。是不是?我我说没说过我之前。就这个反馈值它是有的。M5,我调一下。返回一个int值。对吧,M5我调一下,我不防位置行吗?我就直接调行吗?他我直接调这个M5方法行吗。
05:08
行吧。你有返位置我可以不收啊。有返回值我可以不接收啊,我可以不接收啊,这个地方我可以不写呀,这我可以不写代码呀,我就直接这样啊,所以大家想一想这个。是不是方法重复了呢?就是说返回值类型和方法重载有没有关系呢?答案是没有。啊,这个执行不了啊,编译器懵了啊。编译器。认为这两个方法一样,我们来编译一下。好的,会在第82行,错了,他说已经在这个类里边定义过M5了。你在第82行为啥又定义了一个M方法?所以大家注意,这不是重载,这叫重复啊,这不是重载啊,这是方法重复了。
06:04
啊,不能这样写,所以这块我要警示一下大家,方法重载与返回值类型无关。主要看的是方法名和行参。啊,和反馈值类型没有关系啊。和返回值类型没有关系。我们在这个位置上写上吧。方法重载和方法的返回值类型无关。啊,就是你这个方法的反馈是类型,你不管是啥,它它在Java中区分这俩方法靠的不是反馈是类型,靠的是你这个方法名,以及你后边的行参,别的他啥也不靠,你再来个M6啊,你说你现在啊,有一个有一个有一个方法啊呃,是Y的M6。啊,然后接下来你在这个位置上有一个方法叫public static void m6,那你说这样行不行啊。
07:02
就这个方法没有修饰服务列表。这个方法没有。方法没有修饰符列表,这个有,这个有修饰符列表啊,这两个方法重载了吗?这两个方法重载了吗?我们来看也没有重载,大家看啊,也没有重载。编译包头97行说你已经定义过M6了,为什么在97行又定义了一次?显然这个也不行,各位,这也是方法重复了,各位啊,这也是方法重复了,我再强调一下啊,这不是重载,是重复啊,这不是重载是重复了啊,所以从这又得出个什么结论啊,哎,来吧,这方法重载和什么无关?方法重载和方法的修饰符列表无关,修饰符列表无关啊,和返回值类型没有关系,和修饰符列表也没有关系,跟他们都沾不着边。方法重载只和什么有关系?各位我再强调下,只和你这个方法名以及后面这个形式参数列表有关系,Java编译器用来区分这两个方法,靠的第一个就是方法名,第二个就是式参数列表,剩下的他都不看,跟反馈值类型没有关系,跟反馈类型没有关系,跟修饰福列表也没有任何关系,就是你这两个方法到底重载还是没有重没有重载就主要看的是你这个方法名一样诶,并且行参如果不一样的话,我们认为就是方法重载啊,而且是在同一个类当中啊,同一个类。
08:41
对,是这样,同一个类里面。啊,同一个类当中。各位,这就是方法重载啊,这就是方法重载。啊。好,这个大家理解吗?就什么时候发生方法重载,你能背会吗?我刚才说的三个条件,缺一部分哪三个条件?
09:05
同们三个条件。条件一是什么?条件一是什么呀?同一个类吧,二啥呀。什么发明相同吧?哎,三是什么呀。参数列表不同吧,哎,和什么无关啊,和返回值类型无关对不对?哎,和什么无关啊,修饰符列表无关是不是啊,就是说同一个类当中方法名相同,参数列表不同啊,这个三个条件只要同时都满足,那么我认为就是发生的方法重载啊,然后呢,和返回值类型是没有关系的,和修饰符列表也是没有任何关系的啊,和这些都是没有关系的。那别人问你什么时候用方法重载,怎么解释什么时候我用这个方法重载,功能怎么着相似的时候,最好让这两个方法名怎么着长得一样,既美观又方便我们成全呢调用对吧?哎,那我们在满足什么条件的时候,代码满足长什么德性的时候,哎,我们构种方法重载呢,一在同一个类当中,第二个方案名还得一样,第三个参数列表不同,参数列表不同包括什么呀,数量个数不同算不同,顺序不同算不同,类型不同也算不同,和返回值类型无关,和我们的修饰符列表也是没有任何关系啊,这样就是我们的一个方法重载机制啊,方法重载机制。
我来说两句