Java中的重载和重写

198 阅读2分钟

Java中的重载和重写

在Java编程中,我们经常需要创建多个同名方法或重写已有的方法。这就是Java中的重载(Overloading)和重写(Overriding)。

重载(Overloading)

重载指的是在同一个类中创建多个同名的方法,但每个方法具有不同的参数列表。例如,我们可以创建一个add方法,它可以接受两个整数作为参数,也可以创建一个add方法,它可以接受两个浮点数作为参数。

public class MyClass {
  public void printMessage(String message) {
    System.out.println("Message: " + message);
  }

  public void printMessage(int number) {
    System.out.println("Number: " + number);
  }
}

上面的代码中,我们定义了一个MyClass类,该类包含两个名为printMessage的方法,分别接受一个字符串和一个整数作为参数。

重载方法必须具有不同的参数列表。重载方法可以具有不同的返回类型,但不能仅通过返回类型来区分方法。重载方法可以具有不同的访问修饰符,也可以抛出不同的异常,或不抛出任何异常。

重写(Overriding)

重写指的是在子类中重新定义父类的方法。这意味着子类中的方法与父类中相同的方法名称、返回类型和参数列表都相同。但是,子类中的实现可能会有所不同。这样做允许我们在子类中修改继承的方法的行为,并根据需要进行自定义。

    public class MySubClass extends MyClass {
      @Override
      public void printMessage(String message) {
        System.out.println("Custom Message: " + message);
      }
    }

上面的代码中,我们定义了一个MySubClass类,它扩展自MyClass,并且重写了printMessage方法。在MySubClass中,我们使用@Override注解来告诉编译器我们正在重写父类中的方法。我们还更改了printMessage方法的实现,以便在输出信息时添加“Custom”前缀。

重写方法必须与父类中的方法具有相同的名称、返回类型和参数列表。重写方法不能拥有比父类更严格的访问修饰符。如果超类方法声明抛出异常,则子类方法应该声明抛出相同的异常或其子类异常,或者不抛出任何异常。

总结

在Java中,重载和重写是非常强大的特性,它们允许我们编写灵活的代码,可以根据需要进行自定义和修改。掌握这些特性对于成为一名优秀的Java开发人员来说非常重要。