이번 시간에는 자바에서 중요한 개념인 오버로딩에 대해서 알아보는 시간을 가지겠습니다.
오버로딩(Overloading)은 다중정의라고 하며
메소드 이름은 동일하되 매개변수의 자료형, 갯수, 순서를 다르게 하여 정의하는 것을 말합니다.
오버로딩은 크게 두개로 나뉩니다.
1)생성자 오버로딩
2)메소드 오버로딩
오버로딩을 할 때 지켜야 할 규칙이 있습니다.
1) 메소드명이 동일해야 한다.
2) 매개변수의 자료형, 갯수, 순서가 달라야한다.
3) 반환타입은 같아도 되고 달라도 된다
어쨋든 아래에 오버로딩 예제를 올려봅니다.
public class Yuja { private int yuja; private int sugar; public void setYuga(int yuja){ this.yuja=yuja; } public int getYuja(){ return yuja; } public void setSugar(int sugar){ this.sugar=sugar; } public int getSugar(){ return sugar; } }
위의 소스코드는 유자차를 만드는 Yuja 클래스입니다. 일단 여기서 오버로딩의 개념은 없지만 앞서 썼던 캡슐화의 개념이 포함되어 있습니다.
그리고 아래의 소스코드는 차를 만드는 TeaMachine 클래스입니다.
public class TeaMachine { int coffee; int sugar; int cream; //유자 클래스 유형의 차 만들기 Yuja yj; public void makeTea(int coffee, int sugar, int cream){ this.coffee=coffee; this.sugar=sugar; this.cream=cream; System.out.println("밀크 커피 나가요~~"); System.out.println("커피 농도 : "+(coffee+sugar+cream)); } public void makeTea(int coffee, int sugar){ this.coffee=coffee; this.sugar=sugar; System.out.println("설탕 커피 나가요~~"); System.out.println("커피 농도 : "+(cofee+sugar)); } public void makeTea(int coffee){ this.coffee=coffee; System.out.println("블랙 커피 나가요~~"); System.out.println("커피 농도 : "+(coffee)); } //int가 수용할 수 있는 작은 다른 범위(float, short 형으로도 가능)로 메소드 오버로딩 구현 가능 public void makeTea(int coffee, float sugar){ this.coffee=coffee; this.sugar=sugar; System.out.println("float 커피 나가요~~"); System.out.println("커피 농도 : "+(cofee+sugar)); } // 반환 타입이 달라도 됨 public int makeTea(short coffee, int sugar){ this.coffee=coffee; this.sugar=sugar; System.out.println("short 커피 나가요~~"); System.out.println("커피 농도 : "+(cofee+sugar)); return (coffee+sugar); } // 유자차를 만드는 메소드를 오버로딩 public void makeTea(Yuja yj){ this.yj=yj; System.out.println("유자차 나가요~~"); System.out.println("유자차 농도 : "+(yj.getYuja())); System.out.println("설탕 농도 : "+(yj.getSugar())); System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); System.out.println("유자차농도: "+(yj.getYuja()+yj.getSugar())); } }
위의 TeaMachine 클래스에서는 메소드 오버로딩의 다양한 예를 보았습니다.
이제 마지막으로 Cafe 라는 메인 클래스에서 위의 했던 소스들을 불러와 활용해보겠습니다.
public class Cafe { public static void main(String[] args) { TeaMachine h2 = new TeacMachine(); h2.makeTea(3, 3, 3); // 밀크커피 h2.makeTea(2); // 블랙커피 h2.makeTea(3, 5); // 설탕커피 h2.makeTea(2, 3.0f); // float커피 h2.makeTea((short)2, 3); // short커피 Yuja h3 = new Yuja(); h3.setYuja(5); h3.setYuja(5); h3.makeTea(h3); } }
댓글 없음:
댓글 쓰기