출처: FastCampus 한 번에 끝내는 Java/Spring 웹 개발 마스터 객체 지향 입문

03. 함수와 메서드


함수란(function)

1.하나의 기능을 수행하는 일련의 코드

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

3.함수로 구현된 하나의 기능은 여러 곳에서 동일한 방식으로 호출되어 사용될 수 있다.

한 군데에서 기능을 구현하면 더한다라는 기능을 갖다 쓰면 된다.


함수 정의하기


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

int add(int num1, int num2) {
  int result;
  result = num1 + num2;
  return result;
}

반환이 없을 경우에는 void add() {

}이렇게 쓴다. 매개변수는 아무 것도 안써도 된다.


함수 구현하기 예제


public class FunctionTest {
  
  public static int addNum(int num1, int num2) {
    
    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) {
    
    int n1 = 10;
    int n2 = 20;
    
    int total = addNum(n1, n2);
    System.out.println(total);//30
    
    sayHello("안녕하세요");//안녕하세요
    
    total = calcSum();
    System.out.println(total);//5050
  }
}

함수 호출과 스택 메모리


스택: 함수가 호출될 때 지역 변수들이 사용하는 메모리

함수의 수행이 끝나면 자동으로 반환 되는 메모리

public class FunctionTest {
  
  public static int addNum(int num1, int num2) {
    
    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) {
    
    int n1 = 10;
    int n2 = 20;
    
    int total = addNum(n1, n2);
    System.out.println(total);//30
    
    sayHello("안녕하세요");//안녕하세요
    
    total = calcSum();
    System.out.println(total);//5050
  }
}

main 메서드에서 호출되지 않은 메서드들은 스택 메모리에 저장되지 않는다. 스택 메모리는 메서드 호출에 대한 스택 프레임만 저장하므로, 호출되지 않은 메서드는 스택 메모리에 저장되지 않는다. 호출되지 않은 메서드의 경우, 실행 시점에 스택 메모리에 영향을 주지 않는다.

이 코드에서 스택 메모리의 삭제가 발생하는 부분은 다음과 같다:

addNum 메서드가 호출되고 종료될 때 (return 값 반환)

sayHello 메서드가 호출되고 종료될 때 (메서드 실행 완료)

calcSum 메서드가 호출되고 종료될 때 (return 값 반환)

main 메서드가 종료될 때 (메서드 실행 완료)

따라서 예시에서 총 4번의 스택 프레임 삭제가 발생하며, 이는 스택 메모리에서 각 스택 프레임이 삭제되는 것을 의미한다.


메서드 (method)


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

2.C++에서는 멤버 함수(member function)이라고도 한다.

3.메서드를 구현함으로써 객체의 기능이 구현 된다.

4.메서드의 이름은 그 객체를 사용하는 객체(클라이언트)에 맞게 짓는 것이 좋다.

객체가 있으면 다른객체가 그 객체를 사용하는 경우가 있다.

사용 할 때 메서드를 호출 할 떄, 호출하는 입장에서 명령하는 것이 좋다.

getStudentName()

5.클래스안에 있고 클래스의 멤버 변수들을 활용해서 구현한다.

+ Recent posts