参考并摘自:http://www.runoob.com/java/java-override-overload.html

重写(Override)

子类对父类(允许访问的)方法的实现过程进行重新编写,形参和返回值都不能变。即外壳不变,核心重写。

重写不能抛出比父类更宽泛的异常。

class Animal{
public void eat(int n){
System.out.println("Animal eat:"+n);
}
}
class Dog extends Animal{
public void eat(int m){
System.out.println("Dog eat:"+m);
}
}
public class Test{
public static void main(String[] args){
Animal animal = new Animal();
Animal dog = new Dog(); //注释行
animal.eat(10);
dog.eat(20);
}
}
运行结果:
Animal eat:10
Dog eat:20

上面注释一行尽管dog是Animal类型,但它运行的是Dog类的eat方法。

这是由于编译时,只检查参数的引用类型;运行时指定对象的类型并运行对象的方法 。

方法的重写规则:

1.参数列表和返回类型必须和被重写的相同

2.访问权限不能比父类更低

3.父类的成员方法只能被它的子类重写

4.声明为final方法不能被重写

5.声明为static方法不能被重写,但能够被再次声明

6.子类和父类在同一包中,则子类可以重写所有(除private和final)的方法

7.子类和父类不在同一包中,则子类可以重写声明为public和protected并且非final的方法

8.重写的方法可以抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,

或者比被重写方法声明的更广泛的强制性异常,反之则可以。

9.构造方法不能被重写

10.如果不能继承一个方法,则不能重写这个方法

重载(Overload):

重载是在一个类里面,方法名相同而参数不同。

返回类型可以相同也可以不同。重载方法必须有一个独一无二的参数类型列表。

最常用的就是构造器的重载

重载规则:

1.必须改变参数列表(参数个数或类型或顺序不一样)

2.可以改变返回类型

3.可以改变访问修饰符

4.可以声明新的或更广的检查异常

5.方法能够在同一个类中或者在一个子类中被重载

public class Test{
public int test(){
System.out.println("test1");
return 1;
}
public void test(int a){
System.out.println("test2");
}
public void test(int a,String b){
System.out.println("test3");
}
public void test(String a,int b){
System.out.println("test4");
} public static void main(String[] args){
Test o = new Test();
o.test();
o.test(1);
o.test(1,"a");
o.test("a",1);
}
}
//运行结果:
test1
test2
test3
test4

总结:

重载和重写是java多态性的不同表现,方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

最新文章

  1. Linq 单表城市级联
  2. ORB-SLAM(二)性能
  3. ES6详解
  4. oracle的基本数据类型(转载)
  5. ecilipse Javadoc文档注释
  6. activity theme parent 属性浅析
  7. Minimum Transport Cost(floyd+二维数组记录路径)
  8. STL—list
  9. 201521123075 《Java程序设计》第1周学习总结
  10. WordPress 实现附件上传自动重命名但不改变附件标题
  11. redis最全配置讲解
  12. Redhat中关于httpd仓库安装的简要步骤
  13. java的poi 读取exc 文件
  14. confluence上传文件附件预览乱码问题(linux服务器安装字体操作)
  15. js控制css时注意
  16. Transition学习笔记
  17. JS在if中的强制类型转换
  18. 如何用js创建表格?
  19. [代码]set容器查找操作使用
  20. 一、thinkphp

热门文章

  1. Android Gallery实现3D相册(附效果图+Demo源码)
  2. hdoj:2046
  3. Ogre2.1 Hlms与渲染流程
  4. QT Graphics-View 3D编程例子- 3D Model Viewer
  5. Java基础复习笔记基本排序算法
  6. js的 new Date()日期格式化显示以及js获取时间戳
  7. web.xml配置DispatcherServlet (***-servlert.xml)
  8. Android性能测试--内存
  9. javascript与java正则表达式写法的区别
  10. python中的细节