重写(Override)与重载(Overload)的区别(面试题)

概念:重写(Override):是存在子父之间的关系,子类里定义的方法与父类里定义的方法具有相同的方法名以及相同的返回值和参数类型

  重写规则

      1、方法名形参列表相同;

      2、访问权限,子类大于等于父类;   

      3、返回值类型和声明异常类型子类小于父类;

实例

 1 public class OverrideDemo{
 2    public static void main(String args[]){
 3       Animal b = new Dog(); // Dog 对象
 4       b.move(); //执行 Dog类的方法
 5    }
 6 }
 7 
 8 class Animal{
 9    public void move(){
10       System.out.println("动物可以移动");
11    }
12 }
13  
14 class Dog extends Animal{
15    public void move(){
16       super.move(); // 应用super类的方法
17       System.out.println("小狗可以跑和走");
18    }
19 }

编译运行结果为:

      动物可以移动

      小狗可以跑和走        

概念:重载(Overload):是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同

  重载规定:

      1、被重载的方法必须改变参数列表(参数个数或类型不一样);

      2、被重载的方法可以改变返回类型;

      3、被重载的方法可以改变访问修饰符;

      4、被重载的方法可以声明新的或更广的检查异常;

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

      6、无法以返回值类型作为重载函数的区分标准;

实例:

 1 public class OverloadDemo {
 2     public int test(){
 3         System.out.println("test1");
 4         return 1;
 5     }
 6  
 7     public void test(int a){
 8         System.out.println("test2");
 9     }   
10  
11     //下面两个参数类型顺序不同
12     public String test(int a,String s){
13         System.out.println("test3");
14         return "returntest3";
15     }   
16  
17     public String test(String s,int a){
18         System.out.println("test4");
19         return "returntest4";
20     }   
21  
22     public static void main(String[] args){
23         OverloadDemo od = new OverloadDemo();
24         System.out.println(od.test());
25         od.test(1);
26         System.out.println(od.test(1,"test3"));
27         System.out.println(od.test("test4",1));
28     }
29 }
原文地址:https://www.cnblogs.com/luckyjcx/p/12268669.html