ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 메소드 오버로딩(method overloading)
    Java/OOP 2022. 9. 24. 13:09

    메소드 오버로딩이란?!

    메소드 오버로딩(Method Overloading) 
    클래스내에 같은 이름의 메소드를 2개 이상 정의할 수 있게 해 주는 기능
    
    public class Calculator {
        int add(int a, int b) {
            return a + b;
        }
    
        int add(int a, int b, int c) {
            return a + b + c;
        }
    
        double add(double a, double b) {
            return a + b;
        }
    
        public static void main(String[] args) {
            Calculator c = new Calculator();
    
            System.out.println(c.add(2, 4));        // test 1
            System.out.println(c.add(2, 4, 8));     // test 2
            System.out.println(c.add(3.14, 2.54));  // test 3
        }
    }

     

    예제 

    # before 오버로딩(overloading)

    public class BankAccount {
     
    
        // 파라미터: 입금할 액수
        // 리턴: 성공여부(boolean)
        boolean deposit(int amount) {
            if (amount < 0 || owner.getCashAmount() < amount) {
                System.out.println("입금실패하였습니다. 잔고" + getBalance() + "현금" + owner.getCashAmount());
                return false;
            } else {
                // 변수를 재설정하려면 setter 메서드를 사용해야 한다
                owner.setCashAmount(owner.getCashAmount() - amount);
                setBalance(getBalance() + amount);
                System.out.println(amount + "입금하였습니다. 잔고:" + getBalance() + "현금:" + owner.getCashAmount());
                return true;
            }
        }
        
        // 미국 달러를 입금하는 method
        public boolean depositUSD(double amount, double exchangeRate){
            return deposit((int)(amount * exchangeRate));
        }
    
        // 일본 엔화를 입금하는 method
        public boolean depositJPN(double amount, double exchangeRate){
            return deposit((int)(amount * exchangeRate));
        }        
         
    
    
    }
    public boolean deposit(int amount) {
        if (amount < 0 || amount > owner.getCashAmount()) {
            System.out.println("입금 실패입니다. 잔고: " + balance + "원, 현금: " + owner.getCashAmount() + "원");
            return false;
        }
    
        balance += amount;
        owner.setCashAmount(owner.getCashAmount() - amount);
    
        System.out.println(amount + "원 입금하였습니다. 잔고: " + balance + "원, 현금: " + owner.getCashAmount() + "원");
        return true;
    }
    
    public boolean depositWithExchangeRate(double amount, double exchangeRate) {
        return deposit((int) (amount * exchangeRate));
    }

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

    접근제어자  (0) 2022.10.20
    실습  (0) 2022.10.08
    this  (0) 2022.10.01
    생성자(Constructor)  (0) 2022.10.01
    객체  (0) 2022.09.18

    댓글

Designed by Tistory.