Java 重载和重写

目录

一、重写(覆写/重写/覆盖)

重写的规则

关于重写的注意事项

二、重载

重载规则:

重载(Overload)和重写(Override)的区别 


一、重写(覆写/重写/覆盖)

就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法。

重写的规则

  1. 方法同名
  2. 参数类型和个数相同
  3. 返回类型相同

关于重写的注意事项

  1.  普通方法可以重写, static 修饰的静态方法不能重写.
  2.  重写中子类的方法的访问权限不能低于父类的方法访问权限.
  3.  重写的方法返回值类型不一定和父类的方法相同(但是建议最好写成相同, 特殊情况除外).

 子类访问权限要大于父类

// Animal.java 
public class Animal { public void eat(String food) { ... } 
} 
// Bird.java 
public class Bird extends Animal { // 将子类的 eat 改成 private private void eat(String food) { ... } 
} 
// 编译出错
Error:(8, 10) java: com.bit.Bird中的eat(java.lang.String)无法覆盖com.bit.Animal中的
eat(java.lang.String) 正在尝试分配更低的访问权限; 以前为public

 有了这个注解能帮我们进行一些合法性校验. 例如不小心将方法名字拼写错了 (比如写成 aet), 那么此时编译器就会发 现父类中没有 aet 方法, 就会编译报错, 提示无法构成重写.提高了写代码的效率.

我们推荐在代码中进行重写方法时 显式加上 @Override 注解 .

// Bird.java 
public class Bird extends Animal { @Override private void eat(String food) { ... } 
}

二、重载

重载规则:

  1. 方法名相同
  2. 参数类型不同、参数个数不同甚至是参数顺序不同
  3. 返回值不作要求
  4. 必须在同一个类中

class Test{public static void main(String[] args) {int a=10;int b=20;int i=add(a,b);System.out.println(i);double a2=10.5;double b2=12.5;double i2=add(a2,b2);System.out.println(i2);}public static int add(int x,int y){return x+y;}public static double add(double x,double y){return x+y;}
}//结果
30
23

 如代码中一样,通过传入的参数类型不同,确定调用哪种的重载方法。

重载(Overload)和重写(Override)的区别 

本文链接:https://my.lmcjl.com/post/15416.html

展开阅读全文

4 评论

留下您的评论.