首先从定义上说说重载和重写:
- 方法重载
当我们发现在处理同一个功能或者业务的时候,有时候需要不同的参数,我们可以使用方法重载;当我们在修改以前的代码、功能扩展的时候,
可以使用方法重载。重载特征:同一个类中,两个或者两个以上的方法:
a、方法名字相同
b、方法签名不同(签名:方法参数的类型、顺序、个数,三个有一个不同,就代表签名不同)
c、与方法返回值没有关系
package com.wb.dispatch; public class OverLoadTest { public OverLoadTest() { } public void sayHello() { System.out.println("我是无参的!"); } public void sayHello(String arg) { System.out.println("我是有一个参数的:" + arg); } public void sayHello(String arg0, int arg1) { System.out.println("我是有2个参数的:" + arg0 + "和" + arg1); } public void sayHello(int arg0, String arg1) { System.out.println("我是有2个参数的:" + arg0 + "和" + arg1); } }
- 方法重写
类a继承类b,当b类中的某一个方法c不能满足类a的需求的时候,需要在类a中对类b的方法c的方法体进行重新实现。
重写又叫覆写,是以继承为基础的:
1、子类重写父类(基类)的方法
2、子类的方法与父类的方法名字、方法签名都要一样
3、子类的方法与父类的方法返回值也要一样
4、子类的访问修饰符一样要大于等于父类的访问修饰符(public>protected>default>private)5、子类不能抛出新的异常或者比父类声明更宽泛的异常4、请增加@Override注解
public class Animal { void sayHello(String arg) { System.out.println(arg); } protected String sayHello(String arg0, String arg1) { return arg0 + arg1; } public void sayHello(int arg0){ System.out.println(arg0); } }
public class OverrideTest extends Animal { /** * 重写了父类方法,修饰符从default扩展到了public * @param arg */ @Override public void sayHello(String arg) {