前言:
作者简介:爱吃大白菜1132
人生格言:纸上得来终觉浅,绝知此事要躬行
如果文章知识点有错误的地方不吝赐教,和大家一起学习,一起进步!
如果觉得博主文章还不错的话,希望三连支持!
目录
概念:简单的说,方法名字相同,参数列表不同,返回值可相同也可不同(无要求),当我们调用这个函数时,传参不同,编译器就会依照传参的类型,调用对应的方法。
代码示例:
- public static int add(int x, int y) {
- return x + y;
- }
- public static double add(double x, double y) {
- return x + y;
- }
- public static double add(double x, double y, double z) {
- return x + y + z;
- }
-
- public static void main(String[] args) {
- int a=add(1, 2); // 调用add(int, int)
- System.out.println(a);
- double b=add(1.5, 2.5); // 调用add(double, double)
- System.out.println(b);
- double c=add(1.5,2.5, 3.5); // 调用add(double, double, double)
- System.out.println(c);
-
- }
当满足以下条件时才构成方法重载:
概念:重写也称为覆盖。重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
代码示例:
- class shape {
- public void draw() {
- System.out.println("画形状");
- }
- }
-
-
- class triangle extends shape {
- @Override//注解
- public void draw() {
- System.out.println("画三角形");
- }
- }
-
- class rectangle extends shape {
- @Override//注解
- public void draw() {
- System.out.println("画矩型");
- }
- }
-
- class dog extends shape {
- @Override
- public void draw() {
- System.out.println("画一个小狗 🐕");
- }
- }
-
- public class Test_11_13 {
- public static void main(String[] args) {
- shape[] s = {new triangle(), new rectangle(), new dog()};//向上引型
-
- for (int i = 0; i < s.length; i++) {
- s[i].draw();
- }
- }
- }
代码运行结果:

观察代码可以发现,当我们调用draw()方法时,输出的信息并不是我们在父类中编写的draw()方法中的信息,而是我们在他子类中编写的同名的draw()方法输出的信息,这就是子类中的draw()方法对父类中的draw()方法进行了重写。
重写的注意事项:
| 区别点 | 重写 (override) | 重载(Overload) |
| 参数列表 | 一定不能修改 | 必须修改 |
| 返回类型 | 一定不能修改【除非可以构成父子类关系】 | 可以修改 |
| 访问限定符 | 一定不能做更严格的限制(可以降低限制) | 可以修改 |