Published 2022. 7. 19. 14:15
반응형

메서드에 대해서 배워보도록 합시다

미친 듯이 굉장히 중요한 부분이기 때문에 

집중해서 보시길 바랍니다 

 

여러분들이 코드를 테스트할 때 main 메서드 안에 코드를 작성해서 테스트를 하잖아요

그때 사용되었던 메인도 메서드입니다 

 

java 프로그래밍을 할 땐 무조건 메인 메서드부터 동작합니다 

 

익숙하게 본 코드를 한버 뜯어서 살펴보도록 합시다 

public static void main(String[] args){

	//코드를 작성 

}

먼저 public은 접근 제어자입니다 

이 메서드에 접근 할 수 있는 범위를 지정해놓은 건데요 public은 누구나 접근이 가능하도록 하는 것입니다

 

static은 정적이다 라는 뜻을 가지는데 일단은 인스턴스를 생성하지 않아도 사용 가능하다고 생각만 

해두시면 됩니다 ㅎㅎ 인스턴스란 class를 사용 가능하도록 new 키워드로 생성한 것을 뜻합니다

 

void는 반환 타입입니다 

void는 반환하지 않는다 라는 것을 알려주는 것입니다 

예를 들어 public static int main(이라면 

꼭 return int형 데이터 가 되어야 합니다 

그렇지 않으면 에러가 나요 ㅎㅎ 

 

자 그럼 어떻게 사용하는지 테스트해봅시다 

public class test {

	public static void printTest() {

		for (int i = 0; i < 10; i++){
			
			System.out.println("i의 값은 : " + i);
		}
		
	}
	
	public static void main(String[] args) {
			
		printTest();
		
	}

}

메인 메서드에서 (앞으론 그냥 메인이라고 하겠습니다)

i의 값을 10번 출력해야 한다고 합시다 그럼

메인에 직접 작성하는 게 아니라 메서드를 생성해서 작성하는 것이 코드가 간결하고 

재사용하는 측면에서 훨씬 더 좋습니다 

메인 메서드는 최대한 누구나 알아보기 쉽게 작성해야 하고 간결해야 합니다

 

만약에 이런 메서드가 없다면 어떻게 되는지 한번 볼까요 

i의 값을 10번 출력하라고 했는데 클라이언트가 마음을 바꿔서 40번 출력하라고 합니다 

근데 지금 메서라는 개념은 없는 상태예요 자 봅시다 코드가 길어질 것 같아요 

		for (int i = 0; i < 10; i++){
			
			System.out.println("i의 값은 : " + i);
		}
		for (int i = 0; i < 10; i++){
			
			System.out.println("i의 값은 : " + i);
		}
		for (int i = 0; i < 10; i++){
			
			System.out.println("i의 값은 : " + i);
		}
		for (int i = 0; i < 10; i++){
			
			System.out.println("i의 값은 : " + i);
		}

쓰레기 코드가 나옵니다 아주 그냥 봐도 쓰레기 같죠 ㅎㅎ 

반면 메서드를 사용한다면 간단하게 바뀔 겁니다 

	public static void main(String[] args) {
			
		printTest();
		printTest();
		printTest();
		printTest();
		
	}

아주 간단합니다 ㅎㅎ 저렇게 하는 것도 별로 보기 좋지 않아 보입니다 그렇다면 이렇게 한번 바꿔볼까요

	public static void printTest() {

		for (int i = 0; i < 10; i++){
			
			System.out.println("i의 값은 : " + i);
		}
		
	}
	
	public static void printTestPlay(int cnt) {
		
		for (int i = 0; i < cnt; i++){
			
			printTest();
		}
		
	}
	
	public static void main(String[] args) {
			
		printTestPlay(4);
		
	}

메서드를 하나 더 끼워 넣는 겁니다 

메인에서는 저렇게 중복된 코드를 넣는 건 보기 좋지 않아요 ㅎㅎ 메서드는 일련과정을 딱 하나만 하게 

놔두는 게 좋습니다 

 

예를 들자면 핸드폰을 볼까요 터치스크린은 단순히 터치의 기능만 하죠? 그럼 내부 구조는 어떨지

생각해봅시다 

터치를 하면 터치한 영역에 대한 정보를 아마 폰 내부의 cpu에게 넘기겠죠 ㅎㅎ

그게 터치 스크린의 기능은 끝입니다 

아주 단순하죠 나는 누른 부분의 위치를 알려주면 돼 ~ 응 끝이야 느낌입니다 

이처럼 메서드를 짤 때는 거기에다가 다른 기능을 더 넣지 말고 순수하게 구현하고자 하는 기능만

짜는 게 어떨까 합니다 괜히 잘 만들어진 메서드에 수정 사항이 있다고 해서 그 메서드를 수정하지

말고 플로우를 바꾸는 것도 하나의 방법이라는 거죠 

 

추후에 배울 오버 로딩이나 오버 라이딩을 배우면 아시겠지만 이미 있는 메서드를 수정하지

않고도 같은 명칭으로 사용할 수 있는 방법이 자바는 있습니다 

 

무튼 오늘 배워본 메서드는 이러한 것입니다 아참 제가 메인에서 다른 메서드를 부를 수 있는 건

static 때문입니다! 이것도 아셔야 해요 ㅋㅋ 없으면 인스턴스를 생성해서 사용해야 합니다 

 

저도 아직 항상 배우려고 노력 중인 사람으로 같이 발전하는 시간이었으면 합니다 

반응형

'Developer > Java' 카테고리의 다른 글

[java]멤버란 무엇인가(클래스, 인스턴스)  (0) 2022.07.28
[java]클래스와 인스턴스  (0) 2022.07.21
[java]배열  (0) 2022.07.06
[java]반복문  (0) 2022.07.05
[java]조건문  (0) 2022.07.01
복사했습니다!