🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
>[success] # 方法的重载 1. **同一个类中**,出现**多个方法名称相同**,但是**形参列表是不同的**,那么这些方法就是**重载方法(Overload)**。 2. 只要是同一个类中,**方法名称相同、形参列表不同**,那么他们就是重载的方法,其他都不管!(如:修饰符,返回值类型都无所谓),**形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称** ~~~ public class Person { // 构造函数初始化 age 和 name Person(int a, String n) { } Person() { } } ~~~ * 方法重载的主要形式**体现在**: 1.1. 参数的个数**不同** ~~~ public class Person { // 无参 参数个数 void printInfo() { } void printInfo(int age) { } } ~~~ 1.2. 参数的类型**不同** ~~~ public class Person { // 参数类型 void printInfo(String name) { } void printInfo(int age) { } } ~~~ 1.3. 参数 的顺序**不同** ~~~ public class Person { // 参数顺序 void printInfo(String name, int age) { } void printInfo(int age, String name) { } } ~~~ 1.4. 返回值类型和形参变量名**无关** ~~~ public class Person { // erro 此时不是重载 int printInfo(int age, String name) { return 10 } void printInfo(int age, String name) { } } ~~~ ~~~ public class Person { // erro 此时不是重载 虽然名字不同 int printInfo(int zz, String aa) { return 10 } void printInfo(int age, String name) { } } ~~~ * 总结: 1. 方法重载即**方法名相同**,**参数个数类型均不相同**则可以构成重载 2. 下面虽然符合重载但是建议返回值类型最好 **相同** ~~~ public class JavaTest { // 是重载 方法名相同但参数类型不同 int printInfo(int zz, String aa) { return 10; } void printInfo(String age, String name) { } } ~~~ >[danger] ##### 重载意义 1. 调用者只需要记住一个方法名就可以调用各种 不同的版本,来实现各种不同的功能 2. 可读性好,方法名称相同提示是同一类型的功能,通过形参不同实现功能差异化的选择,这是一种专业的代码设计 >[danger] ##### 重载案例 * 实现可以自增 可以指定增长年龄 ~~~ public class Person { int age; void setAge() { age++; } void setAge(int num) { age += num; } public static void main(String[] args) { Person person = new Person(); person.setAge(); System.out.println(person.age); // 1 person.setAge(20); System.out.println(person.age); // 21 } } ~~~