方法的重载(overload)

方法的重载就是在同一个类中允许存在一个以上的同名方法,只要这些方法的参数个数、参数类型、参数顺序不同即可。(特别注意:返回值类型可以不同)
image.png
介绍一下不定长参数方法(类似c语言中以数组名为参数的函数):
语法:返回值 方法名(参数数据类型……参数名称)
其实这个不定长参数名称就是一个数组,编译器会把“参数数据类型……参数名称”这种形式看成是“数据类型[]参数名称”,如:
image.png

方法的重写(Override)和重载(Overload)的区别

Overload要求两个方法具有方法名相同、形参列表不同的要求,返回值类型不能作为重载的条件;
Override要求子类方法与父类方法具有“两同两小一大”的要求:
两同指:即父类方法、子类方法的方法名相同、形参列表相同;
两小指:子类方法返回值类型要么是父类方法返回值类型的子类、要么与父类方法返回值类型相同;子类方法声明抛出的异常类型要么是父类方法声明抛出的异常类型的子类、要么与父类声明抛出的异常类型相同;
一大指:子类方法的访问权限要么与父类方法的访问权限相同,要么比父类方法的访问权限更大。

多态

多态指的是当同一个类型的引用类型的变量(但不一定是同一个变量)在执行相同的方法时,实际上会呈现出多种不同的行为特征。比如程序有:Animal a1 = new Animal (); Animal a2 = new Wolf();虽然a1、a2两个引用变量的类型都是Animal,但当它们调用同一个run()方法时,如果Wolf()类重写过Animal的run()方法,这就会导致a1、a2两个变量执行run()方法时呈现出不同的行为特征,这就是多态。多态增加了编程的灵活性,实际上大量设计模式都是基于多态类实现的。
image.png