java中重载与重写都是实现多态(同一个对象调用同一个方法做出不同的反应)的方式。
重载【overload】(编译时的多态)
- 发生在同一个类里
- 方法名相同
- 参数不同(顺序,多少,内容。。。)
- 返回类型可以相同也可以不同
- 可以抛出不同的异常
- 可以有不同的访问权限
重载不能通过返回类型来区分:
比如class A 类两个方法
public void getName();
public String getName();
A a=new a();
a.getName() ; ----->如果不指定调用类型 根本不知道调用了哪个函数。
重写【override】(运行时的多态)
发生在子类与父类之间
方法名相同
参数相同
返回类型相同
不可以比父类被重写方法抛出新的的强制性异常(编译时的异常)。
不可以比父类被重写方法更低的访问权限
final修饰的方法不能被重写,static修饰的方法属于类方法也不能被重写