728x90
목차
1. 메소드
■ 메소드란?
- 메소드는 클래스 내부에 정의되어 있는 함수를 지칭
- 자바는 클래스 내부에 작성해야 해서 일반 함수는 존재하지 않고 모두 메소드라고 부름
- 메소드는 같은 이름을 사용할 수 없지만 가능한 경우가 있음
- 같은 이름을 사용가능한 경우는 매개 변수에 따라 같은 이름으로 작성가능(오버로딩)
2. 오버로딩(Overloading)
■ 오버로딩이란?
- 같은 메소드명을 중복하여 사용하는 것을 의미
- 접근 지정자, 반환값이 달라지면 오버로딩 불가능
- 오버로딩은 매개 변수의 자료형, 갯수에 따라 같은 이름의 메소드명으로 선언 가능
3. 예시
■ Method1
package j08_메소드;
public class Method1 {
// 매개변수 : x, 반환 : x
// 매개변수가 입력
// void는 공허함을 뜻하며, 값을 반환하지 않음
// 호이스팅 : 위에서 아래로 코드를 먼저 분석하여 정의를 먼저 하고 그 뒤에 실행해서 main 메소드의 위, 아래 둘다 작성 가능
public static void method1() {
System.out.println("단순 실행");
System.out.println();
}
// 매개변수 : int 하나 입력, 반환 : x
public static void method2(int num) {
System.out.println("num : " + num);
System.out.println();
}
// 매개변수 : int 두개 입력, 반환 : x
public static void method3(int num, int num2) {
System.out.println("num : " + num);
System.out.println("num2 : " + num2);
System.out.println();
}
public static String method4() {
// 반환은 여러개의 값을 할 수 없고 무조건 하나만 가능
return "데이터 반환";
}
public static String method5(int age) {
// 독립된 공간으로 변수 ageStr을 main에서도 사용 가능
String ageStr = age + "살";
return ageStr;
}
public static void main(String[] args) {
String ageStr = "30살";
method1();// 함수 호출
method2(100);
method3(200, 300);
System.out.println(method4());
System.out.println();
String data1 = method4();
System.out.println(data1);
System.out.println();
System.out.println(method5(30));
System.out.println();
}
}
■ Method2
package j08_메소드;
public class Method2 {
public static int sum(int x, int y) {
int result = x + y;
return result;
}
public static void main(String[] args) {
int a1 = 10;
int b1 = 20;
int a2 = 20;
int b2 = 30;
int a3 = 30;
int b3 = 40;
int total1 = 0;
int total2 = 0;
int total3 = 0;
total1 = a1 + b1;
total2 = a2 + b2;
total3 = sum(a3, b3);
System.out.println(total1);
System.out.println(total2);
System.out.println(total3);
}
}
■ Method3
package j08_메소드;
public class Method3 {
// 메소드의 오버로딩(오버로드) : 호출할(부를) 때 달라지는 것
public static void ov1() {
System.out.println("매개변수 없음");
}
public static void ov1(int a) {
System.out.println("int 매개변수 하나");
}
// 오버로딩은 무조건 매개변수에 따라 달라짐
// 접근 지정자, 반환값이 달라지면 오버로딩을 할 수 없음
public static int ov1(int a) {
System.out.println("int 매개변수 하나");
return a;
}
public static void ov1(int a, String b) {
System.out.println("int 먼저 그다음 String");
}
public static void ov1(String a, int b) {
System.out.println("String 먼저 그다음 int");
}
public static void main(String[] args) {
ov1();
ov1(10);
}
}