오늘 메소드에 대해서 배워보았다.
선생님 설명해주는 부분도 좋았지만 내가 조금더 조사해보았다.
메소드(Method)
보통 다른언어에는 함수라는 것이 별로도 존재한다. 하지만 자바는 클래스를 떠나 존재하는 것은 있을 수 없기 때문에 자바의 함수는 따로 존재하지 않고 클래스 내에 존재한다. 자바는 이 클래스 내의 함수를 메소드라고 부른다.
메소드를 사용하는 이유는 무엇인가?
프로그래밍을 하다 보면 똑같은 내용을 자신이 반복해서 적고 있는 것을발견할 때가 있다.
이 때가 바로 메소드가 필요한 때이다. 여러 번 박복해서 사용된다는 것은 언제고 도다시 사용할 만한 가치가 있는 부분이라는 뜻이다. 즉, 이러한 경우이것을 한 뭉치로 묶어서 "어떤 입력값을 주었을 때 어떤 리턴값을 돌려준다" 라식의 메소도를 작성하는 것이 현명한 일일 것이다.
public int sum(int a, int b) {
return a+b;
}
위 메소드의 의미는 다음과 같이 정의된다.
“sum이라는 메소드는 입력값으로 두개의 값(int 자료형 a, int 자료형 b)을 받으며 리턴값은 두 개의 입력값을 더한 값(int 자료형)이다.”
메소드의 구조
public 리턴자료형 메소드명(입력자료형1 입력변수1, 입력자료형2 입력변수2, ...) {
...
return 리턴값; // 리턴자료형이 void 인 경우에는 return 문이 필요없다.
}
리턴자료형은 메소드 수행 후 돌려줄 값의 자료형을 의미한다. 메소드의 리턴값은 return 이라는 명령을 사용한다.
메소드는 입출력 유무에 따라 다음과 같이 4가지로 분류할 수 있다.
- 입력과 출력이 모두 있는 메소드
- 입력과 출력이 모두 없는 메소드
- 입력은 없고 출력은 있는 메소드
- 입력은 있고 출력은 없는 메소드
이것들에 대해서 자세히 알아보도록 하자.
평범한 메소드
입력 값이 있고 리턴값이 있는 메소드가 평범한 메소드이다.
평범한 메소드의 전형적인 예를 한번 보도록 하자.
public int sum(int a, int b) {
return a+b;
}
sum 메소드의 입출력 자료형은 다음과 같다.
- 입력 값 - int 자료형 a, int 자료형 b
- 리턴 값 - int 자료형
sum 메소드는 두 개의 입력값을 받아서 서로 더한 결과값을 돌려주는 메소드이다.
위처럼 입력값과 리턴값이 있는 메소드는 다음처럼 사용된다.
리턴값받을변수 = 객체.메소드명(입력인수1, 입력인수2, ...)
실제코드의 예는 다음과 같다.
Test myTest = new Test();
int c = myTest.sum(a, b);
위에서 보듯이
myTest.sum(a,b)
호출 후 리턴값을 저장하는 c 의 자료형은 int 로 해야만 한다. 왜냐하면 sum 메소드의 리턴타입이 int로 되어 있기 때문이다. sum 메소드의 리턴타입은 public int sum(int a, int b) { ...
에서 보듯이 메소드명(sum) 바로 좌측에 표기하도록 되어 있다.입력값이 없는 메소드
입력값이 없는 메소드가 존재할까? 당연히 그렇다. 다음을 보자.
public String say() {
return "Hi";
}
say 메소드의 입출력 자료형은 다음과 같다.
- 입력 값 - 없음
- 리턴 값 - String 자료형
say라는 이름의 메소드를 만들었다. 하지만 입력 인수부분을 나타내는 괄호 안이 비어있다.
이 메소드는 어떻게 쓸 수 있을까? 다음과 같이 따라해 보자.
Test myTest = new Test();
String a = myTest.say();
System.out.println(a);
위의 메소드를 쓰기 위해서는 say()처럼 괄호 안에 아무런 값도 넣어주지 않고 써야 한다. 위의 메소드는 입력값은 없지만 리턴값으로 'Hi'라는 문자열을 돌려준다. 따라서
String a = myTest.say()
처럼 하면 a에는 'Hi'라는 문자열이 대입되게 되는 것이다.
위 예제를 실행하면 다음과 같이 "Hi"라는 문자열이 출력된다.
Hi
즉, 입력값이 없고 리턴값만 있는 메소드는 다음과 같이 사용된다.
리턴값받을변수 = 객체.메소드명()
리턴값이 없는 메소드
리턴값이 없는 메소드 역시 존재한다. 다음의 예를 보자.
public void sum(int a, int b) {
System.out.println(a+"과 "+b+"의 합은 "+(a+b)+"입니다.");
}
위 sum 메소드의 입출력 자료형은 다음과 같다.
- 입력 값 - int 자료형 a, int 자료형 b
- 리턴 값 - void (없음)
리턴값이 없는 메소드는 명시적으로 리턴타입 부분에 void라고 표기한다. 리턴값이 없는 메소드는 돌려주는 값이 없기 때문에 다음과 같이 사용한다.
Test myTest = new Test();
myTest.sum(3, 4);
즉, 리턴값이 없는 메소드는 다음과 같이 사용된다.
객체.메소드명(입력인수1, 입력인수2, ...)
실제로 위 메소드를 호출해 보면 다음과 같은 문자열이 출력된다.
3과 4의 합은 7입니다.
아마도 여러분은 다음과 같은 질문을 할지도 모른다. "3과 4의 합은 7입니다.“라는 문장을 출력해 주었는데 리턴값이 없는 것인가? 이 부분이 초보자들이 혼동스러워 하는 부분이기도 한데
System.out.println
문은 메소드내에서 사용되어지는 문장일 뿐이다. 돌려주는 값은 당연히 없다. 돌려주는 값은 return 명령어로만 가능하다.입력값도 리턴값도 없는 메소드
이것 역시 존재한다. 다음의 예를 보자.
public void say() {
System.out.println("Hi");
}
위 say 메소드의 입출력 자료형은 다음과 같다.
- 입력 값 - 없음
- 리턴 값 - void (없음)
입력 값을 받는 곳도 없고 return문도 없으니 입력값도 리턴값도 없는 메소드이다.
이것을 사용하는 방법은 단 한가지이다.
Test myTest = new Test();
myTest.say();
즉, 입력값도 리턴값도 없는 메소드는 다음과 같이 사용된다.
객체.메소드명()
이상으로 JAVA의 메소드에 대해 알아보는 시간이었다.자료출처 : https://wikidocs.net/225
JAVA
0 개의 댓글:
댓글 쓰기