Method(함수)란
보통 프로그래밍 언어에서는 함수를 Method라고 부르는 것은 class안에 있는 함수들을 의미한다. 하지만 Java에서는 Method라고 부르는데 그 이유는 Java는 class를 떠나 존재하는 것은 있을 수 없기 때문에 Java에서 함수는 따로 존재하지 않고 class내에 존재하는 함수를 Method라고 한다.
Method의 형태
아래의 그림은 간단하게 작성한 method의 형태이다.
호이스팅
호이스팅이란 주로 Javascript와 같은 일부 언어에서 변수선언이나 함수 선언을 해당 스코프에 최상단으로 끌어올리는 동작을 말한다. 즉 호이스팅은 실제 코드의 위치보다 앞서서 실행되는 것처럼 동작되는 것이며 주로 컴파일러나 인터프리터 동작방식에 의해 이루어진다. Java에서는 method를 호출할 때 method의 선언위치에 제한을 두지 않는다. 이것이 호이스팅이 적용된 것처럼 보이지만 그렇지 않다 Java는 컴파일러가 전체 소스코드를 분석할 때 호출 대상 method를 식별하기 때문에 호이스팅과는 전혀 다른 개념이다.
Method 타입과 매개변수
method는 return타입과 매개변수란 개념이 존재한다. 물론 타입이 없이 method를 만들 수 있고 매개변수를 받지 않는 method를 만들 수 있다. 어떤 입력값을 받아서 어떠한 명령문을 실행할지는 오로지 개발자가 어떻게 method를 구현하는지에 따라 달라진다. 일단 method의 return타입과 매개변수가 무엇인지 알아보자
Method 반환타입
method는 값을 반환을 할수도 있고 안 할수도 있다. 만약 method의 반환타입이 없다면 void를 쓰면되고 만약 반환타입이 있다면 앞서 배운 자료형으로 값을 반환하면 된다. 여기서 주의할점은 반환 값은 하나만 가능하고 만약 method의 반환타입이 int라면 반환 값도 int형이여야한다.
매개변수
method명 옆에 괄호안에 들어가는 값들을 매개변수라고 하며, 간단하게 입력 값이라고 생각하면 된다. 매개변수 값이 있는 method는 호출 할 때 반드시 매개변수의 값을 매개변수 자료형에 맞게 입력해야한다. method에 따라 매개변수 값이 없을수도 있고 매개변수에 값을 미리 넣을 수도 있다.
method를 정의하고 method를 호출해보자
package j08_메소드;
public class Method2 {
//클래스 안에서 정의한것을 메소드라 부르고 바깥에서 정의한 것을 함수라고 한다.
// 매개변수 : x, 반환 x
// 매개변수 -> 입력
// void -> 반환이 없다.
// 호이스팅 -> 실행전에 소스코드를 분석하고 정의한다.
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();
}
//매개변수 : 매개변수 두개 입력, 반환 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) {
return age + "살";
}
public static void main(String[] args) {
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(29));
System.out.println();
}
}
method 오버로딩
Java에서도 다른 언어에서 등장하는 함수 오버로딩과 같은 기능인 method 오버로딩이 있다. method 오버로딩이란 method명은 똑값지만 매개변수의 갯수와 순서가 다를 때 호출 할 때도 달라지는 것이다.
method 오버로딩 예시
package j08_메소드;
public class Method3 {
//메소드 오버로딩 : 메소드의 이름을 똑같지만 매개변수의 갯수와 순서가 다름, 호출 할 떄 달라짐
//메소드의 반환 자료형이 달라도 오버로딩이 안된다
public static void ov1() {
System.out.println("매개변수 없음");
}
public static void ov1(int x) {
System.out.println("int 매개변수 하나 매개변수 x: " + x);
}
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(100);
ov1(100,"b");
ov1("a",100);
}
}
'Language > Java' 카테고리의 다른 글
[Java] Class의 생성자(Constructor) 및 접근 지정자 (0) | 2023.09.13 |
---|---|
[Java] Class와 객체지향언어(OOP) (0) | 2023.09.13 |
[Java] 반복문 (0) | 2023.09.12 |
[Java] 조건문 (0) | 2023.09.11 |
[Java] 문자열 String class (0) | 2023.09.02 |