方法重载

廖雪峰

资深软件开发工程师,业余马拉松选手。

在一个类中,我们可以定义多个方法。如果有一系列方法,它们的功能都是类似的,只有参数有所不同,那么,可以把这一组方法名做成同名方法。例如,在Hello类中,定义多个hello()方法:

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 + "!");

}

}

}

这种方法名相同,但各自的参数不同,称为方法重载(Overload)。

注意:方法重载的返回值类型通常都是相同的。

方法重载的目的是,功能类似的方法使用同一名字,更容易记住,因此,调用起来更简单。

举个例子,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);

}

}

练习

给Person增加重载方法setName(String, String):

public class Main {

public static void main(String[] args) {

Person ming = new Person();

Person hong = new Person();

ming.setName("Xiao Ming");

// TODO: 给Person增加重载方法setName(String, String):

hong.setName("Xiao", "Hong");

System.out.println(ming.getName());

System.out.println(hong.getName());

}

}

class Person {

private String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

下载练习

小结

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

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

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

上一篇: 酒馆战棋/时空酒馆
下一篇: 包含“衍”的成语:

相关推荐

洗衣机定时器(如何更换和调整)。
《神雕侠侣》各种版本大盘点,你最喜欢哪一个?
旯旮的读音是什么意思
详解美图秀秀和WPS如何打造出专业电子签名
大卫早孕试纸强阳性HCG多少
蓝牙耳机什么品牌的音质最好?盘点10大公认音质最好的蓝牙耳机品牌