# Java 重载

> 原文： [https://javabeginnerstutorial.com/core-java-tutorial/overloading/](https://javabeginnerstutorial.com/core-java-tutorial/overloading/)

重载方法为您提供了一个选项，可以在类中使用与*相同的方法名称*，但具有*不同的参数*。

## Java 方法规则中的重载

有一些与重载方法相关的规则。

#### 重载方法

*   必须更改参数列表
*   可以更改返回类型
*   可以更改访问修饰符（更广泛）
*   可以声明一个新的或更广泛的受检异常

###### 方法可以在类或子类中重载。

## 重载方法示例

```java
 //Overloaded method with one argument
	public void add(int input1, int input2) {
		System.out.println("In method with two argument");
	}

        //Overloaded method with one argument
	public void add(int input1) {
		System.out.println("In method with one argument");
	}
```

## 调用重载方法

在几种可用的重载方法中，调用的方法基于参数。

```java
 add(3,4);
     add(5);
```

第一个调用将执行第一个方法，第二个调用将执行第二个方法。

###### 引用类型而不是对象决定调用哪个重载方法，和覆盖方法相反。

感谢 Manoj 指出拼写错误。

## 方法重载备忘单

*   使用相同的方法名称但使用*不同的参数*称为重载。
*   **构造器**也可以重载
*   重载的方法必须设置*不同的*参数。
*   重载的方法**可能**具有不同的返回类型。
*   重载的方法**可能**具有不同的访问修饰符。
*   重载的方法**可能**抛出不同的异常，**更宽或更窄的**没有限制。
*   **超类**中的方法也可以在子类中重载。
*   多态适用于覆盖和重载。
*   基于**引用类型**，确定在**编译时间**上确定将调用哪个重载方法。

方法重载示例

```java
package com.overloading;
/*
 * Here we will learn how to overload a method in the same class.
 * Note: Which overloaded method is to invoke is depends on the argument passed to method.
 */
public class MethodOverloading {

	public static void main(String args[])
	{
		//Creating object of the class MethodOverloading

		MethodOverloading cls = new MethodOverloading();
		System.out.println("calling overloaded version with String parameter");
		cls.method("Hello");
		System.out.println("calling overloaded version with Int parameter");
		cls.method(3);

		/*
		 * Here same method name has been used, But with different argument.
		 * Which method is to invoke is decided at the compile time only
		 */
	}

	/*
	 * Overloaded version of the method taking string parameter
	 * name of the method are same only argument are different.
	 */
	void method(String str)
	{
		System.out.println("Value of the String is :"+str);
	}

	/*
	 * Overloaded version taking Integer parameter
	 */
	void method(int i)
	{
		System.out.println("Value of the Int is :"+i);
	}
}
```



*   使用相同的方法名称但使用*不同的参数*称为重载。
*   **构造器**也可以重载
*   重载的方法必须设置*不同的*参数。
*   重载方法**可能**具有不同的返回类型。
*   重载的方法**可能**具有*不同的访问修饰符*。
*   重载的方法**可能会**抛出不同的异常，**更宽或更窄的**没有限制。
*   **超类**中的方法也可以在子类中重载。
*   多态适用于覆盖和重载。
*   基于**引用类型**，确定在**编译时**确定将调用哪个重载方法。