** 메소드 오버로딩(Method Overloding)
- 같은 클래스 내에서 같은 이름의 메소드를 여러개 선언하는 것
- JVM은 같은 이름의 메소드가 있으면 메소드가 받는
인수의 갯수와 데이터 타입을 비교하여
다르면 각각 다른 메소드로 인식을 한다.
단 return 타입은 메소드를 구분하는 조건으로 사용하지 않는다
- 중복정의, overloading
- 하나의 클래스 내에서 같은 이름을 가지는 메소드가 여러개 정의
- 컴파일러에 의해 각 메소드들이 구별되며, 기준은 인자가 된다.
- [접근제한],[반환형] : 오버로딩 구조 조건에서 제외, 아무 영향을 주지 않음.
- [메소드명] : 반드시 같아야 함.
- (자료형 인자1,…) : 매개변수의 개수 또는 타입을 반드시 다르게 해야 함.
- 오버로딩된 메소드들은 매개변수에 의해서만 구별된다.
- 오버로딩 기법이 필요한 이유 : 같은 목적으로 비슷한 동작을 수행하는 메소드들을 같은 이름으로 일관되게 작업
파일명 : OverLoadTest1.java
package oop;
class Mobile
{
String company;
String model;
int price;
void prn(int p)
{
System.out.println("price="+p);
}
void prn(String comp)
{
System.out.println("company="+comp);
}
void prn(String comp,String mo)
{
System.out.println("company="+comp);
System.out.println("model="+mo);
}
void prn()
{
System.out.println("company="+company);
System.out.println("model="+model);
System.out.println("price="+price);
}
/* int prn()
{
return 1;
} 에러*/
}
public class OverLoadTest1 {
public static void main(String[] args) {
Mobile mobile1=new Mobile();
mobile1.company="SAMSUNG";
mobile1.model="Anycall";
mobile1.price=1000;
mobile1.prn(mobile1.price);
mobile1.prn(mobile1.company,mobile1.model);
mobile1.prn(); //company,model,price 전부출력
mobile1.prn("LG");
}
}
파일명:OverLoadTest2.java
package oop;
class Calc
{
void hap(int a,int b)
{
System.out.println(a+"+"+b+"="+(a+b));
}
void hap(double a, double b)
{
System.out.println(a+"+"+b+"="+(a+b));
}
void hap(String a, String b)
{
System.out.println(a+"+"+b+"="+(a+b));
}
}
public class OverLoadTest2 {
public static void main(String[] args) {
Calc calc=new Calc();
calc.hap(10,20);
calc.hap(2.3,4.5);
calc.hap("HAPPY","SKY");
}
}
'..열심히 공부하세.. > JAVA 문법' 카테고리의 다른 글
[19] 변수의 유효범위 (Scope) (0) | 2012.04.26 |
---|---|
[18] 생성자 함수 (0) | 2012.04.26 |
[16] 메소드호출방식 (0) | 2012.04.24 |
[15] Math 클래스 및 Wrapper 클래스 (0) | 2012.04.24 |
[메소드 연습] (0) | 2012.04.24 |