Java/[패스트캠퍼스] Java & SpringBoot로 시작하는 웹 프로그래밍

Ch 02. 객체 지향 입문 - 03. 함수와 메서드

hinote 2022. 12. 30. 00:12

메서드는 함수의 종류 중 하나이다


함수란 (function)

  • 하나의 기능을 수행하는 일련의 코드
    예전부터 다른 언어에서 오랫동안 사용되어 왔음

  • 구현된(정의된) 함수는 호출하여 사용하고 호출된 함수는 기능이 끝나면 제어가 반환됨

  • 함수로 구현된 하나의 기능은 여러 곳에서 동일한 방식으로 호출되어 사용될 수 있음
    -하나의 함수를 만들면 여러군데에서 호출해서 쓸 수 있음

 

함수 정의하기

함수는 이름, 매개 변수, 반환 값, 함수 몸체(body)로 구성됨

int add(int num1, int num2) { //이 부분이 제일 중요함 
//						- 함수의 이름, 함수가 수행되기 위한 인풋이 있는지 확인
//						-타입과 함께 변수를 써줌 (없을시 괄호만 써둠)
		
	int result;
	result = num1 + num2;
	return result;	//여기에 써있는 데이터 형과 같게 맨 윗줄에 써넣어야 함 
//		- 반환값에 대한 데이터 타입, 만약 수행만 하고 반환값이 없을때는 int대신 void 사용
}

 

 

 

함수 구현하기 예제

 

public class FunctionTest {
	
	public static int addNum(int num1, int num2) { 
//반환값 데이터 타입이 int인 경우. 매개변수를 두개 받는 것을 확인할 수 있음

		int result;
		result = num1 + num2;
		return result;
	}
	
	public static void sayHello(String greeting) { //반환값이 없을 경우
		System.out.println(greeting);
	}
	
	public static int calcSum() { //매개변수가 없는 경우
		
		int sum = 0;
		int i;
		
		for(i = 0; i<=100; i++) {
			sum += i;
		}
		
		return sum;
	}

	public static void main(String[] args) { //두개의 값을 더하는 함수 ( addNum 함수 불러오기 )
		
		int n1 = 10;
		int n2 = 20;
		
		int total = addNum(n1, n2); //n1+n2=30
		
		sayHello("안녕하세요"); //안녕하세요 그대로 출력됨
		int num = calcSum(); //1부터 100까지 더해서 반환하기
		
		System.out.println(total); //30 출력
		System.out.println(num); //1부터 100까지 더한 값 출력
	}
}

 

함수 호출과 스택 메모리

  • 스택 : 함수가 호출될 때 지역 변수들이 사용하는 메모리
  • 함수의 수행이 끝나면 자동으로 반환 되는 메모리

-> num1, num2, result /  n1, n2, total 로 보면 됨
addNum이라는 함수가 호출이 되면 num1, num2 매개변수가 넘어오고 그 안에있는 result라는 반환값을 위한 변수도 있음


->이렇게 이 안에서 쓰이는 모든것들을 지역변수라고 함
지역변수는 그 지역에서만 쓰고 그 지역이 끝나면 자동으로 없어짐


-main에 있는 n1, n2, total도 지역변수임
main의 n1, n2가 addNum을 불렀을 시에 addNum()의 메모리 공간이 생김 
addNum()에서 쓰는 지역변수 세개 num1, num2, result 를 위한 공간도 생김
그 이후 쭉 수행되다가 result가 반환이 되면 자동으로 메모리 공간이 삭제되고 다시 main만 남아있는 상태로 돌아옴

 

 

메서드 (method)

  • 객체의 기능을 구현하기 위해 클래스 내부에 구현되는 함수

     함수 : 어디에 속해있지 않은 그냥 단독 모듈임. 걔를 호출해서 쓰면 됨
     메서드 : 클래스 안에 속해있음, 그 클래스의 멤버변수들을 활용해서 구현되는 것

  • 멤버 함수 (member function)이라고도 함 -> C++


  • 메서드를 구현함으로써 객체의 기능이 구현 됨

  • 메서드의 이름은 그 객체를 사용하는 객체(클라이언트)에 맞게 짓는것이 좋음
     -> 호출하는 입장에서 명령하는 것이 좋음
    예) getStudentName() : StudentName()를 사용하는 다른 객체에서 StudentName을 호출할 때 사용