2.5. 重载与覆盖

守听  金牌会员 | 2023-5-30 16:33:38 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 903|帖子 903|积分 2709

在 Java 中,方法的重载(Overloading)和覆盖(Overriding)是两个重要的概念。它们都涉及到方法的定义与使用,但作用和规则有所不同。
重载(Overloading)

重载是指在同一个类中定义多个同名的方法,但它们的参数列表不同(参数的个数、类型或顺序不同)。重载允许我们使用相同的方法名来实现不同的功能,提高了代码的可读性和可维护性。
下面是一个重载的例子:
  1. public class Calculator {
  2.     public int add(int a, int b) {
  3.         return a + b;
  4.     }
  5.     public double add(double a, double b) {
  6.         return a + b;
  7.     }
  8.     public int add(int a, int b, int c) {
  9.         return a + b + c;
  10.     }
  11. }
复制代码
在这个例子中,Calculator 类有三个 add 方法,分别接受不同数量和类型的参数。当我们调用 add 方法时,Java 会根据传入参数的类型和数量自动选择正确的方法。
  1. Calculator calculator = new Calculator();
  2. int result1 = calculator.add(1, 2); // 调用第一个 add 方法,输出 3
  3. double result2 = calculator.add(1.0, 2.0); // 调用第二个 add 方法,输出 3.0
  4. int result3 = calculator.add(1, 2, 3); // 调用第三个 add 方法,输出 6
复制代码
覆盖(Overriding)

覆盖是指子类重新定义父类的方法,以实现自己的功能。当子类覆盖父类的方法时,方法名、参数列表和返回类型必须与父类完全相同。覆盖允许我们在不修改父类的基础上,定制子类的行为。
下面是一个覆盖的例子:
  1. public class Animal {
  2.     public void makeSound() {
  3.         System.out.println("The animal makes a sound");
  4.     }
  5. }
  6. public class Dog extends Animal {
  7.     @Override
  8.     public void makeSound() {
  9.         System.out.println("The dog barks");
  10.     }
  11. }
  12. public class Cat extends Animal {
  13.     @Override
  14.     public void makeSound() {
  15.         System.out.println("The cat meows");
  16.     }
  17. }
复制代码
在这个例子中,Dog 和 Cat 类都继承了 Animal 类,并分别覆盖了 makeSound 方法。当我们调用 makeSound 方法时,Java 会根据对象的实际类型选择正确的方法。
  1. Animal myAnimal = new Animal();
  2. myAnimal.makeSound(); // 输出 "The animal makes a sound"
  3. Animal myDog = new Dog();
  4. myDog.makeSound(); // 输出 "The dog barks"
  5. Animal myCat = new Cat();
  6. myCat.makeSound(); // 输出 "The cat meows"
复制代码
注意,当子类覆盖父类的方法时,可以使用 @Override 注解来显式声明。这样,如果我们不小心修改了方法签名或者拼写错误,编译器会报错,帮助我们捕获潜在的错误。
总结一下,重载和覆盖是 Java 中两个重要的概念。重载允许我们在同一个类中定义多个同名但参数列表不同的方法,实现不同的功能。覆盖允许子类重新定义父类的方法,定制自己的行为。理解这些概念并在实际编程中应用它们,可以帮助我们编写更高效、易读的代码。


推荐阅读:
https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA
https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表