目录
一、重写(覆写/重写/覆盖)
重写的规则
关于重写的注意事项
二、重载
重载规则:
重载(Overload)和重写(Override)的区别
一、重写(覆写/重写/覆盖)
就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法。
重写的规则
- 方法同名
- 参数类型和个数相同
- 返回类型相同
关于重写的注意事项
- 普通方法可以重写, static 修饰的静态方法不能重写.
- 重写中子类的方法的访问权限不能低于父类的方法访问权限.
- 重写的方法返回值类型不一定和父类的方法相同(但是建议最好写成相同, 特殊情况除外).
子类访问权限要大于父类
// 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) { ... }
}
二、重载
重载规则:
- 方法名相同
- 参数类型不同、参数个数不同甚至是参数顺序不同
- 返回值不作要求
- 必须在同一个类中
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 评论