메소드

조영민·2023년 3월 10일

java

목록 보기
2/24

메소드

다른 프로그래밍 언어에는 함수라는 것이 별도로 존재한다. 하지만 자바는 클래스를 떠나 존재하는 것은 있을 수 없기 때문에 자바의 함수는 따로 존재하지 않고 클래스 내에 존재한다. 자바는 이러한 클래스 내의 함수를 메소드라고 부른다. (일처리를 위해 서로 관련 있는 명령들의 집합)

메소드를 사용하는 이유?


프로그래밍을 하다 보면 똑같은 내용을 자신이 반복해서 적고 있는 것을 발견할 때가 있다. 이 때가 바로 메소드가 필요한 때이다. 여러 번 반복해서 사용된다는 것은 언제고 또 다시 사용할 만한 가치가 있는 부분이라는 뜻이다. 즉, 이러한 경우 이것을 한 뭉치로 묶어서 "어떤 입력값을 주었을 때 어떤 리턴값을 돌려준다"라는 식의 메소드를 작성하는 것이 현명한 일일 것이다.

예제를 보자

int sum(int a, int b) {
    return a+b;
}

위 메소드의 의미는 다음과 같이 정의된다.

“sum 메소드는 입력값으로 두개의 값(int 자료형 a, int 자료형 b)을 받으며 리턴값은 두 개의 입력값을 더한 값(int 자료형)이다.”

여기서 return은 메소드의 결과 값을 돌려주는 명령어이다. 직접 위의 메소드를 만들어 보고 사용해 보자.

public class Sample {
    int sum(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        int a = 3;
        int b = 4;

        Sample sample = new Sample();
        int c = sample.sum(a, b);

        System.out.println(c);  // 7 출력
    }
}

sum에 인수 a, b 즉 3, 4를 매개변수로 전달하여 값을 반환하는 예제이다.

Sample 클래스의 main 메소드에서 Sample sample = new Sample()

클래스이름 변수이름 = new 클래스이름; → 객체 생성

위 처럼 자기 자신의 객체를 생성했다. 이것은 당연히 가능한 코드이고 작성한 클래스를 단독으로 실행시켜 테스트할 때 자주 사용하는 방법이다.

매개변수와 인수


매개변수(parameter)인수(arguments)는 혼용해서 사용되는 헷갈리는 용어이므로 잘 기억해 두자. 매개변수는 메소드에 입력으로 전달된 값을 받는 변수를 의미하고 인수는 메소드를 호출할 때 전달하는 입력값을 의미한다.

public class Sample {
    int sum(int a, int b) {  // a, b 는 매개변수
        return a+b;
    }

    public static void main(String[] args) {
        Sample sample = new Sample();
        int c = sample.sum(3, 4);  // 3, 4는 인수

        System.out.println(c);  // 7 출력
    }
}

**메소드의 구조**


리턴자료형 메소드명(입력자료형1 매개변수1, 입력자료형2 매개변수2, ...) {
    ...    
    return 리턴값;  // 리턴자료형이 void 인 경우에는 return 문이 필요없다.
}

리턴은 메소드 수행 후 반환할 값을 의미한다.

메소드의 입출력 유무에 따라 다음과 같이 4분류로 나눌 수 있다.

  • 입력과 출력이 모두 있는 메소드
  • 입력과 출력이 모두 없는 메소드
  • 입력은 없고 출력은 있는 메소드
  • 입력은 있고 출력은 없는 메소드

메소드에서 this의 활용

멤버 메소드의 매개변수 이름을 의미 있는 이름으로 정해주다 보면 멤버변수와 이름이 겹치게 된다.

이때에 멤버자신을 구별할 목적으로 this를 사용한다.

class Book{
	private String title;
	private String author;
	
	public void setTitle(String title) {
		this.title = title;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
profile
노젓는 개발자

0개의 댓글