1. 메소드 과부하
메소드 이름은 동일하지만 매개 변수는 다르고 과부하입니다.
소위 다른 매개 변수는 두 가지 주요 요점을 가지고 있습니다. 첫 번째는 매개 변수 수가 다르고 두 번째는 매개 변수 유형이 다르다는 것입니다. 이 두 측면 중 하나가 다르면이 방법의 과부하를 구성 할 수 있습니다.
패키지 cn.galc.test; public class testoverload {void max (int a, int b) {system.out.println (a> b? a : b); } / * * int max (int a, int b) { * 반환 a> b? A : B; *} */ void max (float a, float b) {System.out.println (a> b? a : b); }}여기서는 void modifier가있는 두 가지 최대 방법의 이름이 동일하지만 매개 변수 유형이 다르므로 과부하를 구성 할 수 있습니다. int max (int a, int b) 메소드 및 void max (int a, int b) 메소드는 과부하를 구성하지 않습니다. 이제 그들은 중복 이름을 가진 두 가지 방법입니다. 클래스에서 중복 이름으로 두 가지 메소드를 선언하는 것은 허용되지 않으며 컴파일에 오류가 발생합니다. 메소드 이름은 동일하고 매개 변수 유형은 동일합니다. 반환 값 만 다릅니다. 메소드가 이런 식으로 호출 될 수 있기 때문에 이것은 과부하를 구성하지 않습니다. 메소드를 호출 할 때 사용할 수 없습니다. 따라서이 두 가지 메소드를 호출 할 때 정수 번호가 전달됩니다. 두 방법 모두 동일한 이름과 동일한 매개 변수 유형을 가지므로 컴파일러는 호출 할 방법을 구별 할 수 없습니다. 깊은 과부하의 이유 :이 두 가지 방법의 컴파일러가 그것들을 구별하고 호출 할 때 어떤 것을 호출할지 알 수있는 한, 혼란이없고,이 두 가지 방법은 과부하를 구성합니다.
다음 두 가지 방법을 살펴 보겠습니다.
int max (int a, int b) {system.out.println ( "int max (int a, int b) 메소드가 호출); a> b? a : b;} int max (짧은 a, 짧은 b) {system.out.println ( "int max (짧은 a, 짧은 b) 메소드가 호출); a> b? A : B;} 이 두 가지 방법은 컴파일러가 정수를 보자 마자 int 유형으로 취급하기 때문에 과부하를 구성 할 수 있습니다. 따라서 정수를 통과 할 때 컴파일러는 먼저 메소드 MAX (int a, int b)를 호출합니다. 메소드 max (짧은 a, 짧은 b)를 호출하려면 다음과 같은 주요 방법으로 작성해야합니다.
public static void main (String [] args) {testOverload t = new TestOverload (); T.max (3,4); // 메소드 max (int a, int b)를 짧은 a = 3이라고합니다. 짧은 b = 4; T.max (a, b); // 메소드 max (짧은 a, 짧은 b)가 여기에서 호출됩니다. }2. 건축 방법의 과부하
일반적인 방법과 마찬가지로 생성자도 과부하 할 수도 있습니다
패키지 cn.galc.test; 공개 클래스 사람 {int id; int 연령; / *** 생성자*/ public person () {id = 0; 나이 = 20; } / *** 생성자 오버로드 one* @param i* / public person (int i) {id = i; 나이 = 20; } / ** * 생성자 오버로드 2 * @param i * @param j * / public person (int i, int j) {id = i; 나이 = j; }}위의 것은 Java 방법의 과부하에 대한 자세한 설명입니다. 모든 사람의 학습에 도움이되기를 바랍니다.