본문 바로가기
Java/문법

Java MethodOverloading

by ssury94 2024. 12. 11.

 

public class AddTest {


    public static void main(String[] args) {

        // 두 정수를 더하는 함수를 메소드로 가지고 있는 클래스를 만들자.
        // 이 클래스를 이용해서 3과 5를 더해보자.
        Add n1 =new Add();

 


public class Add {


    // 이 클래스에는 멤버 변수가 없다.
    // 두 정수를 더해서 보여주는 함수

    int sum(int num1, int num2){
        return num1+num2;
    }

    // 두 실수를 더하는 함수
    double dsum(double num1, double num2){
        return num1+num2;
    }

    // 왼쪽은 정수, 오른쪽은 실수를 더하는 함수
    //sumIntDouble(3,5.321)

    double sumIntDouble(int num1, double num2){
        return num1+num2;
    }

 

 

    // 파라미터(int num1, double num2)와 데이터 타입 double sumIntDouble은 다르지만 다 숫자를 더하는 함수들이다.
    // dsum, sumIntDouble 구분말고
    // 리턴데이터타입과 파라미터가 다르지만 함수이름은 sum으로 통일하자


    // 이를  "method overloading" 이라고 한다!

 

 

public class Add {
	int sum(int num1, int num2){
        return num1+num2;
    }

    // 두 실수를 더하는 함수
    double sum(double num1, double num2){
        return num1+num2;
    }

    // 왼쪽은 정수, 오른쪽은 실수를 더하는 함수
    //sumIntDouble(3,5.321)

    double sum(int num1, double num2){
        return num1+num2;
}

 


sum()으로 통일하여도 파라미터 상관없이 작동합니다.

 


오버로딩의 조건

1. 메소드 이름이 같아야 한다.

2. 파라미터(=매개변수)의 개수와 타입 또는 순서가 하나라도 달라야 한다.

3. 파라미터의 개수, 타입이 같은상황에 리턴 타입만 다르다고해서 오버로드가 성립되는건 아니다.