본문 바로가기

[TIL]메소드

인포꿀팁 발행일 : 2020-07-31

메소드란? Method

기본적인 원칙 : 하나의 메소드엔 하나의 기능만 담아야한다.

생성된 객체가 수행할 수 있는 연산 또는 행위를 기술한 것이다.

메소드 = 함수

함수가 가지고 있는 특성, 즉 함수는 리턴 값의 형을 먼저 지정하고

함수 이름을 쓴 후 매개변수들을 나열하는 방식으로 정의한다.

 

메소드의 종류

인스턴스 메소드

  • 객체를 생성 후에 객체를 이용하여 접근 할 수 있는 메소드
  • 메소드 내에서 다른 인스턴스 메소드나 클래스 메소드를 호출할 수 있다.

클래스 메소드

  • 객체 생성과 무관하게 클래스 이름을 이용하여 바로 호출할 수 잇는 메소드
  • 클래스 메소드는 메소드의 리턴 타입 앞에 static 키워드를 붙여서 선언한다.
  • 메소드 내에서 인스턴스 변수나 인스턴스 메소드를 바로 접근하여 사용불가하다.
  • 클래스 메소드 내에서 인스턴스 변수나 메소드를 사용하려면 객체를 먼저 생성해야한다.
  • 클래스 메소드 내에서는 this나 super 키워드는 사용 불가
  • 클래스 메소드는 자동으로 final 메소드가 되어 overriding이 불가능하다.

 

메소드 작성 순서

  1. 메소드 접근 제어자 작성
    • private : 클래스 내부에서만 접근가능하며 외부에서는 접근할 수없 다.
    • 생략한 경우 디폴트 : 동일한 패키지(폴더)에 있는 클래스에서만 접근이 가능하다.
    • protected : 동일한 패키지 에 있는 클래스 및 서브클래스에서 접근이 가능하다.
    • public : 제약 없이 어디에서나 접근이 가능하다.
  2. 메소드 리턴 타입
    • 리턴 값의 자료형보다 크거나 같아야 한다.
    • 리턴 타입이 int형이라면 return형이 char/short 같은 작은 자료형도 가능하다.
    • 되돌려 줄 데이터가 없을때 void형 사용
  3. 메소드 이름 :
    • 메소드명은 소문자로 시작
  4. 메소드 파라미터 :
    • 매개변수 / 어규먼트라고도 함 
    • 있을수도 없을 수도 있다. 없다면 자료형이 있어야함
    • 상수값이 있으면 실인수(10) , 없으면 가인수(int n)
  5. 메소드 코드
  6. 지역변수
    • 메소드를 호출할 때 stack 메모리 영역에 메모리 할당된다.
    • 메소드를 빠져 나가며 메모리 해제
  7. 메소드 리턴 값
    • return 되는 값은 메소드 리턴 타입과 동일한 타입이거나 작아야한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package ex0731;
 
public class Method_Ex1 {
 
    public static void main(String[] args) {
        int a;
        User4 u =new User4();
        a=u.sum(10);
        System.out.println(a);
        
        a=u.sum(100);
        System.out.println(a);
    }
/*
55
5050
 */
}
 
class User4 {
    public int sum(int n) {
        int s =0;
        for(int i=1; i<=n;i++) {
            s+=i;
        }
        return s;
    }
}
cs

 

메모리의 stack 영역

  • 메소드 호출과 관계되는 지역 변수와 매개 변수를 저장하는 영역
  • 스택 영역은 메소드 호출과 함께 할당되며, 메소드의 호출이 완료되면 소멸 됨
  • 스택 영역에 차례로 저장되는 메소드의 호출 정보를 스택 프레임이라 한다.

stack 스택

  • 스택은 자료의 삽입과 삭제가 한쪽 끝에서만 수행되는 선형 구조
  • LIFO 구조 Last In First Out 구조
  • push : 스택에 데이터를 삽입하는 것
  • pop : 스택에서 데이터를 삭제하는 것
  • top : 스택에서 가장 위 데이터를 가리키는 위치

 메소드 호출

  • 리턴타입이 void가 아닌 경우
  • 리턴타입이 void인 경우



메소드의 인수 전달

call by value

  • 실매개 변수를 매개 매개변수로 전달
  • 실매개 변수와 형식 매개변수가 기억공간을 따로 확보

call by reference 

  • 참조변수를 매개변수로 전달
  • 실매개 변수와 형식 매개변수가 같은 기억공간을 참조

'Language > JAVA' 카테고리의 다른 글

[TIL] 메소드 오버로딩  (0) 2020.08.03
[TIL]클래스의 활용  (0) 2020.08.03
[TIL] 참조 변수  (0) 2020.07.31
[TIL] 클래스  (0) 2020.07.31
[TIL] 객체지향 프로그래밍  (0) 2020.07.31

댓글