重写、重载的区别



0 写在前面

重写和重载是面向对象程序设计中十分重要的两个概念,其中重写又称为覆盖。
通俗的理解就是,重写就是将一个方法的实现过程再写一遍,覆盖原有方法;重载就是增加一个方法的不同实现,而不覆盖原有的方法。


1 重写(覆盖)

重写是子类对父类方法的实现过程的重新编写。重写的方法应与被重写的方法具有完全一致的返回值、方法名称、参数列表,也就是外壳完全一样,实现过程发生改变。

重写规则:

  • 参数列表必须与原有方法完全相同;
  • 返回类型必须与原有方法相同;
  • 访问权限不能比父类中被重写的方法的访问权限更低;
  • 父类成员方法只能被其子类重写;
  • 声明为 final 的方法不能被重写;
  • 声明为 static 的方法不能被重写,但能够被再次声明;
  • 构造方法不能重写。


2 重载

重载与重写不同之处在于重载与原有方法具有同样的名称,但参数列表可以不同。重载的方法虽然名称和原有方法一样,但是可以认为它们是不同的方法。

重载规则:

  • 重载的方法必须改变参数列表;
  • 重载的方法可以改变返回类型;
  • 重载的方法可以改变访问修饰符;
  • 方法能在同一个类中或在一个子类中被重载。


3 对比


参考资料:http://www.runoob.com/java/java-override-overload.html


 
comments powered by Disqus