目录
1.重载
在同一个类中,会有几个或多个返回值类型、方法名一致的“方法”,通过传入参数的不同,来实现相似却又不相同的功能(如下)
上面这个Demo02类里定义了三个方法名相同的hello方法,这三个方法的返回值类型都是String,唯一不同的是它们的参数
当调用hello方法时会根据传入参数的个数和类型来自同匹配具体所调用的方法:
像这样定义方法的形式称为方法的重载;
2.重写
重写发生在子类与父类之间:子类中定义了一个与父类方法签名完全相同的方法(即返回值类型、方法名、参数完全相同),在子类中对该方法进行覆盖(实现),改变这个方法在父类中的行为,这样定义方法的形式成为方法的重写
上面Student1类是Person1类的子类,在两个类中分别有两个方法,这两个方法签名完全相同
由于run()方法在子类中进行了重写,所以在创建了指向Student1类的对象后,调用的是在子类中重写后的run()方法
像这样定义方法的形式成为方法的重写
3.重载与重写的区别
1.存在位置不同
a.重载发生在同一个类中
b.重写发生在子类中
2.定义方式不同
a.重载要求定义时方法的参数列表必须不同(顺序、个数、类型),返回值和访问修饰符可以不同。
b.重写要求方法名和参数列表必须相同,且返回值类型和抛出异常的范围必须小于父类,访问修饰符的范围大于父类
3.作用时期不同
a.重载发生在编译期,根据编写代码时传入参数不同即可判断所调用的方法
b.重写发生在运行期,只有在运行时才能识别调用的方法属于父类还是子类