方法重载

菜鸟教程说明

定义

如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载。 具体说明如下:

  • 方法名相同
  • 方法的参数类型,参数个不一样
  • 方法的返回类型可以不相同
  • 方法的修饰符可以不相同
  • main 方法也可以被重载

实例代码

  1. class MyClass {
  2. int height;
  3. MyClass() {
  4. System.out.println("无参数构造函数");
  5. height = 4;
  6. }
  7. MyClass(int i) {
  8. System.out.println("房子高度为 " + i + " 米");
  9. height = i;
  10. }
  11. void info() {
  12. System.out.println("房子高度为 " + height + " 米");
  13. }
  14. void info(String s) {
  15. System.out.println(s + ": 房子高度为 " + height + " 米");
  16. }
  17. public static void main(String[] args) {
  18. MyClass t = new MyClass(3);
  19. t.info();
  20. t.info("重载方法");
  21. //重载构造函数
  22. new MyClass();
  23. }
  24. }
房子高度为 3 米
房子高度为 3 米
重载方法: 房子高度为 3 米
无参数构造函数

个人总结

在一个类中,我们可以定义多个方法。如果有一系列方法,它们的功能都是类似的,只有参数有所不同,那么,可以把这一组方法名做同名方法
例如,在Hello类中,定义多个hello()方法:
方法名相同,但各自的参数不同,称为方法重载Overload)。
注意:方法重载的返回值类型通常都是相同的。
方法重载的目的是,功能类似的方法使用同一名字,更容易记住,因此,调用起来更简单。

String indexOf方法的实例

class Hello {
  public void hello() {
        System.out.println("Hello, world!");
    }

    public void hello(String name) {
        System.out.println("Hello, " + name + "!");
    }

    public void hello(String name, int age) {
        if (age < 18) {
            System.out.println("Hi, " + name + "!");
        } else {
            System.out.println("Hello, " + name + "!");
        }
    }
}

String类提供了多个重载方法indexOf(),可以查找子串:

int indexOf(int ch):根据字符的Unicode码查找;

int indexOf(String str):根据字符串查找;

int indexOf(int ch, int fromIndex):根据字符查找,但指定起始位置;

int indexOf(String str, int fromIndex)根据字符串查找,但指定起始位置。

// String.indexOf()
public class Main {
    public static void main(String[] args) {
        String s = "Test string";
        int n1 = s.indexOf('t');
        int n2 = s.indexOf("st");
        int n3 = s.indexOf("st", 4);
        System.out.println(n1);
        System.out.println(n2);
        System.out.println(n3);
    }
}

小结

方法重载是指多个方法的方法名相同,但各自的参数不同;

重载方法应该完成类似的功能,参考StringindexOf()

重载方法返回值类型应该相同。