아쿠의 개발 일지

[Method] method Overloading 기본 본문

Programming/Java

[Method] method Overloading 기본

디아쿠 2024. 6. 22. 18:59

메소드 오버로딩? 같은 이름의 메소드를 중복하여 정의하는 것을 의미한다.

자바에서는 원래 한 클래스 내에 같은 이름의 메소드를 둘 이상 가질 수 없다.

 

하지만 매개변수의 개수나 타입을 다르게 하면, 하나의 이름으로 메소드를 작성할 수 있다.

왜 이런 귀찮은 걸 쓰냐.

추가를 하는 메소드를 여러개 만들어야 하는데, 그때마다 add01 , add02 이렇게 할 수는 없지않냐,,,

add 라는 메소드에 매개변수나 타입을 다르게 지정해서 활용을 하는 것이다.

이는 객체 지향 프로그래밍 특징 중 하나인 다형성을 구현한 방법 중 하나이다.

 

이를 활용하여 1번 코드를 2번으로 refactoring 한 것에 대해서 보여드리겠다,,,

현재 잔액에서 입금과 출금을 하는 것이다.

package method.ex;

public class MethodEx03 {
    public static void main(String[] args) {
        int balance = 10000;

        // 입금 500
        int deposiAmount = 1000;
        balance += deposiAmount;
        System.out.println(deposiAmount + "원 입금하였습니다. 현재 잔액: " +balance);


        // 출금 200
        int withdrawAount = 2000;
        if (balance >= withdrawAount) {
            balance -= withdrawAount;
            System.out.println(withdrawAount + "원 출금하였습니다. 현재 잔액: " +balance);
        } else {
            System.out.println(withdrawAount + "원을 출금하려 하였으나 잔액이 부족합니다.");
        }

        System.out.println("최종잔액: " +balance +"원");



    }



}

 

 

위와 같은 코드를 아래로 refactoring 했다. 

 

 

package method.ex;

public class MethodEx03Ref {
    public static void main(String[] args) {
        int balance = 10000;

        // 입금 500
        int deposiAmount = 1000;
        deposit(balance, deposiAmount);
        
        // 출금 200
        int withdrawAount = 2000;
        withdraw(balance, withdrawAount);

    }

    public static int deposit(int balance, int amount){
        balance += amount;
        System.out.println(amount+ "원 입금하였습니다. 현재 잔액: " +balance);
        return balance;
    }

    public static int withdraw(int balance, int amount){
        if (balance >= amount ){
            balance -= amount;
            System.out.println(amount+ "원 출금하였습니다. 현재 잔액: " +balance);
        } else {
            System.out.println(amount+ "원을 출금하려 하였으나, 잔액이 부족합니다.");
        } return balance;

    }

}

 

입금을 하는 메소드 deposit, 출금을 하는 메소드 withdraw를 만들어서 현재 잔액과, 입출금할 금액을 매개변수로 받고

입금은 단지 추가를 해주고, 출금은 현재 잔액이 출금할 잔액보다 클시 출금을 해주도록 if문을 활용하였다.

결과

728x90

'Programming > Java' 카테고리의 다른 글

[SpringBoot] Entity간의 관계 설정  (3) 2024.06.23
[SpringBoot] RestController  (0) 2024.06.23
[Method] method overloading 기본(2)  (0) 2024.06.22
[Socket] 소켓 통신의 기본  (2) 2024.06.06
[Thread] Thread 기본  (0) 2024.06.02