-
메소드 오버로딩(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)); }