메소드(Method)

성혜·2024년 1월 17일
0

Java

목록 보기
4/25
post-thumbnail

메서드, Method

함수(Function),프로사저(Procedure), 서브 루틴(Sub Routine)...

코드의 집합

같은 목적을 가진 코드의 집합

코드 재사용의 단위(****)


메서드 사용 목적?

  1. 코드의 재사용
  2. 코드의 관리 (가독성)

메서드 사용 단계

  1. 메서드 선언
  2. 메서드 호출

메서드 선언 위치

  • 클래스 내부
  • 메서드의 순서는 무관

메서드 선언

메서드 헤더(header), Signature(서명)
접근지정자  정적키워드  반환타입   메서드 이름   인자리스트
public      static     void       hello        ()
몸통(Body), 구현부
{코드;}

	public static void hello() {
	
		//구현부 > 메서드가 하려는 업무
		System.out.println("안녕하세요");
	}

메서드 인자리스트

아래와 같은 말

파라미터(Parameters)
인자(Argument)
매개변수

: 이 매개변수는 선언된 메소드 안에서만 사용할 수 있고, 다른 메소드에서는 사용할 수 없는 로컬변수!

public static void checkScore(int kor, int eng, int math) {		
int total = kor + eng + math; //총점
		
double avg = total / 3.0; 
		
String resultString = avg >= 60 ? "합격" : "불합격";
		
System.out.printf("평균 점수 %.1f점은 %s입니다.\n",avg,resultString);
		
	}
    
 //함수 호출하기
 checkScore(100, 90, 80);
 
 

반환타입

: void == 없다 == null

: 반환 타입 설정하면 무조건 같은 자료형으로 반환 해줘여 함!

public static int getNum() {
int num = 100;
return num ; 
// 메서드 종료 + 값 반환 => return 밑에 코드는 실행 될 수 없음.
		 
//System.out.println("메서드 종료");
	}

정적키워드와 접근지정자는 클래스 파트와 함께 보는 것이 좋음!


정적키워드, static

지시자(제어자) 중 하나

클래스 or 클래스 맴버에 붙이는 키워드

static이 붙은 멤버변수나 메소드는 클래스로부터 생성하지 않고, 클래스 이름을 통해 직접 접근할 수 있다!
=> 메모리를 효율적으로 사용 가능

✔ 모든 객체들이 동일한 값을 가지는 멤버변수가 있을 경우, static으로 선언!

: 예시 코드는 길어서 문제 풀이와 함께 보여드리겠습니당 !


접근지정자

클래스 or 클래스 멤버에 붙이는 키워드로써 외부에 어느 정도의 수준으로 노출할 건지 제어

1. public

  • 클래스 : 모든 패키지에서 접근이 가능
  • 멤버 : 모든 곳에서 접근 가능

2. private

  • 멤버: 같은 클래스 내에서만 접근 가능

3. protected

  • 멤버 : 같은 패키지에서 접근 할 수 있고 or 다른 패키지의 자식 클래스에서 접근 가능

4. (default)

  • 클래스 : 같은 패키지내에서만 접근 가능
  • 멤버 : 같은 패키지내에서만 접근 가능


메서드 오버로딩, Method Overloading

같은 이름의 메서드를 여러개 만드는 기술

메서드의 인자 리스트를 다양한 형태로 구성해서, 같은 이름의 메서드를 여러개 만드는 기술

메서드 오버로딩을 하는 이유?

  • 성능 향상 > x
  • 개발자에게 도움 > o
    => 메서드 하나의 이름만 알면 되기 때문에 편리함

메서드 오버로딩 구현 조건

  1. 매개변수의 개수가 다르면 인정해줌
  2. 매개변수의 자료형

메서드 오버로딩 구현 조건 불가능

  1. 매개변수의 이름
  2. 반환값의 자료형
 메서드 만드는 중..
1. public static void test() {} 			//o
2. public static void test() {} 			//x, 1번 때문에
3. public static void test(int n) {} 		//o => 매개변수의 개수가 다름 => 즉 호출 하는 방법이 다르기 때문에 다른 메서드로 인정해줌
4. public static void test(int m) {} 		//x,3번 땜에 => 매개변수의 이름이 다르다고 메서드가 다른게 아님 => 매개 변수를 넘길 때 이름을 지정하고 넘기는 것이 아님
5. public static void test(int n, int m) {} //o
6. public static void test(String) {}  	    //0 => 인자의 자료형이 다르니 때문에 가능
7. public static int test () {}			    //x,1번 땜에



재귀 메서드, Recursive Method

재귀 구조를 가진 메서드

메서드 구현부에서 자기 자신을 호출하는 메서드

어렵다. > 머리속으로 상상하기 힘들다.

파일 디렉토리 구조 or 트리 구조 > 많이 사용



//main
//팩토리얼 예제

//요구사항] 팩토리얼 메서드를 구현하시오.
		
int n = 4;
int result = factorial(n);
		
System.out.printf("%d! = %d\n", n, result);

//method
public static int factorial(int n) {
		
		
return (n==1) ? 1 : n * factorial(n-1);
	}
	
	
public static void m1() { //재귀 매서드
		
System.out.println("메서드1");
m1(); //재귀호출
}
profile
하루를 정리하고 기록합니다.

0개의 댓글