본문 바로가기
프로그래밍 공부/Java

[lesson] Java 프로그래밍 언어 - 메소드

by Luna_lua 2021. 7. 26.
반응형

저번에 기본구조를 간단히 보면서 들어본적이 있습니다. (Hint! 패키지 > 클래스 > 메소드 > 소스코드)

2021.07.17 - [프로그래밍 공부/Java] - [lesson] Java 프로그래밍 언어 - 출력 메소드 및 변수 (+ 기본 구조)

 

[lesson] Java 프로그래밍 언어 - 출력 메소드 및 변수 (+ 기본 구조)

자바의 기본구조를 알아봅시다! 순서는 프로젝트 >> 패키지 >> 클래스 >> 메소드 >> 소스코드 순서!! 패키지 클래스 메소드를 구분할때는 클래스명이 항상 대문자로 시작하니까 Class이름으로 구분

luna-lua.tistory.com

 

그럼 메소드는 어떻게 사용할까요?

 

<메소드 기본구조>

기본적으로 이름 뒤에 소괄호가 들어간 형태입니다. 단, 키워드 뒤에 소괄호는 메소드가 아니니 주의 하셔야 해요~

( 예를 들면, For( ; ; ) { }, while( ) { }, if( ) { }, switch( ) { } 등등은 제어문이지 메소드가 아닙니다. ) 

 

메소드는 함수라고 아시는 분도 있어서 함수처럼 설명을 해보려 합니다.

f                            (x)                            =                            2x+1

메소드 이름              매개변수                                                  결과값 (리턴값)

※ 여기서 리턴값은 메소드 종료 시 메소드를 부른곳에 값을 전달할 목적으로 쓰는 것 입니다.

 

<메소드 선언>

//① int ② sum(③ int a, int b){
int sum(int a, int b){
	// ④ 실행할 문장
    // ⑤ return a+b;
    return a+b;
    }
    
// ① : 리턴타입 : 리턴 값이 있다면 리턴 값의 자료형을 작성하고, 
//     리턴 값이 없다면 비워놓지 않고 void를 작성한다.
// ② : 메소드명 : 동사로 작성한다. (연필(매개변수)을 쓴다(메소드))
// ③ : 자료형 + 매개변수명 : 외부에서 전달받을 값이 있다면, 자료형과 순서에 맞게 선언해준다. 
//     생략이 가능하지만 생략시 외부에서 값을 전달 받을 수 없게 된다.
// ④ : 실행할 문장 : 생략이 가능하며, 메소드의 기능을 구현하는 로직을 작성한다.
// ⑤ : 리턴 값 : 생략이 가능하다.

+) 

다형성(polymorphism)

<오버로딩(Overloading)>

 - 매개변수의 개수 또는 타입이 다르면 동일한 이름의 메소드로 선언할 수 있다.
 - 메소드를 불러와야하는데(load) 메소드 개수가 다양해서(over) 뭘불러야 하는지 고를 수 있게 할수 있다. 

 

 

<메소드 주의 사항>

메소드 선언할 때에는 {}가 있으며, 반드시 메소드 밖에서 선언(main메소드도 포함)한다.
메소드 사용할 때에는 {}가 없으며, 반드시 메소드 안에서 사용한다.

 

 

그럼 메소드 선언 해보는걸 배웠으니 한번 선언해볼까요?

 

만들어 볼 메소드는 두 정수의 곱셈을 하는 메소드를 선언해봅시다!

// 1. 메소드 이름을 생각한다.
	mul(){ }

// 2. 매개 변수를 생각한다.
	mul(int num1, int num2){ }

// 3. 실행할 문장을 생각한다.
	mul(int num1, int num2){ 
		int result = num1 * num2;
	}

// 4. 리턴값을 생각한다.
	mul(int num1, int num2){ 
		int result = num1 * num2;
		return result;
	}

// 5. 리턴 타입을 결정한다.
	int mul(int num1, int num2){ 
		int result = num1 * num2;
		return result;
	}

 

메소드를 선언 했으니 한번 사용해볼까요?

주의 사항! 메소드의 리턴 타입이 void가 아니라면 사용한 부분 통채로가 리턴 값이고,
메소드의 리턴 타입이 void면 실행 메소드이므로 값으로 봐서는 절대 안된다.

 

위의 선언했던 값을 가져와서 써볼게요~

public class Test2 {
	
    // public은 접근 권한자로서 나중에 따로 설명 예정입니다.
    // static 또한 공용의 목적이며, 이 클래스가 구현되기 전에 메모리에 있는 내용으로 나중에 따로 설명할 예정입니다.
	public static int mul(int num1, int num2){ 
		int result = num1 * num2;
		return result;
	}
	
	public static void main(String[] args) {
		int value = mul(2,4);
		System.out.println(value);
	}
}

 

<메소드의 목적>

1. 재사용(특정성을 부여해서는 안됩니다. 입력 및 출력등을 메소드에 넣어놓으면 특정 입출력만 가능해지기 때문입니다.)

2. 소스코드 간결화
3. 모듈화(하나의 코드를 여러개의 메소드로 분리하는 작업)

 

 

<return값 사용방법>

리턴값이 생략이 가능하다 했는데 언제 써야하는 궁금하지 않나요? 한번 알아볼까요?

 

사용한 쪽에 로직의 결과를 전달해야 할 때 또는 메소드 내에서 모든 작업이 끝날 수 없을 때 리턴을 해주어야 하고,
사용한 쪽에 로직의 결과를 전달할 필요가 없을 때 또는 메소드 내에서 모든 작업이 완료될 때 리턴하면 안됩니다.

반응형