본문 바로가기
IT/Java

자바 메소드(Method) 알아보기

by flatsun 2019. 1. 14.
반응형

저번에 객체화를 했으니 이번에는 메소드인데

객체화 개념이 없이 메소드를 이해할라면 감이 안올 수 있기 때문에

 재빨리 오른쪽 카테고리의 Java를 눌러서 자바 객체화 알아보기를 보고 오자 




먼저 메소드가 뭔지를 알아야되는데

진부한 자동차 드립을 쓰자면


메소드는 자동차가 할 수 있는 행동이다

바퀴 수나 의자 수가 아닌

사람 들이받기, 부스터 쓰기와 같은 행동이다!!! 

즉 메소드는 자동차고 나발이고 뭔가가 하는 행동이라는 것이다!!!


설명을 더 쉽게하기 위해 그림도 준비해 봤는데



이건 사람이고 객체라고 보면 된다

객체화를 한다고 한다면 사람이라는 객체를 어디다 갖다 쓴다는 말일거다



이건 쥐나게 때리기인데

사람이 하는 행동이니까 메소드다


즉 사람은 메소드가 아니고

쥐나게 때리는 행동은 메소드다 

ㅇㅋ? 


메소드는 클래스 영역 안에서 따로 메소드라고 선언을 해서 쓴다

Method가 들어가지는 않고


public(접근지정자) 반환형(String, int OR void) 메소드명() {



이런 식으로 정의를 한다

근데 메소드는 접근지정자가 거의 public이기 때문에

접근지정자는 고려를 안해도 된다!!!


이제 반환형을 봐야 하는데 

만약 메소드라는 행동을 수행 시

들이받은 사람 숫자를 쓰고 싶다면 int를

들이 받은 사람 이름을 가져오고 싶다면 String을 반환하면 되는 것이다

그리고 아무것도 반환하기 싫다면 void를 써 버리면 된다


마지막으로 메소드 명을 통해 메소드를 불러온다

메소드 명 오른쪽에 ()가 보이는데 이건

()안에 뭐가 있으면 뭘 가져오라는 얘기고

없으면 걍 빈손으로 오라는 얘기다



아까 쓴거 재활용인데 call 괄호 안이 텅텅 빈 만큼 빈 손으로 불러도 된다



즉 메소드명 오른쪽 괄호가 비어있으면 빈 손으로 불러도 사용할 수 있다!!!


하지만 뭔가 들어있다면?




call2를 먼저 확인해보자

괄호 안에 String name을 줬는데


메인 메소드에서 사용하려고 하니 부릉부릉을 갖고오는 call은 쌉가능한데

name이 울부짖는다를 사용하는 call2는 에러가 뜬다

왜 안되는 것일까?



빈손으로 오지 말고 String 타입을 가져오라고 했는데도

빈손으로 부르니 쌉가능이 안되는 것이다


즉 call2를 작동하게 하려면????!!!!



대부분이 하는 실수지만 이렇게 하면 뺨따구 존나 맞아야된다



다시 메소드로 되돌아가보면 call2(String name) 인데 왜 name을 쓰니 오류가?

라는 생각이 들 수 있는데


메소드 사용할 때 String 타입을 손에 쥐어서 call2로 보내면 -> mt.call2("asd")

그 보낸 값을 call2 메소드에서 name이라고 지정해서 사용한다는 말이다


이해가 안 될 수 있는데 사진으로 확인해보자



String에 해당하는 "고영욱"을 넣고 call2 메소드를 실행한다

이게 "고영욱" 을 하건 String Go = "고영욱"

한 다음에 mt.call2(Go) 를 하던 결과는 똑같다


빈손으로 오지 말고 String Type로 오라고 했으니까

String Type면 어쨌든 된다는거다

이제 출력 결과를 확인하면??



고영욱이 울부짖는다!!!!!




마지막으로 반환형(여기서는 String)이 있는 경우는 

메소드 끝에 return 반환값; 을 반드시 붙여줘야 한다


반환한다고 했는데 안하면 사기쳐서 감옥가니까

꼭 반환을 해야 프로그램이 돌아간다


반대로 void로 주고 return을 넣어버리면

반환 안한다고 했는데 한거라 사기친거라 에러가 뜬다

System.out.println(mt.call2("조형기"));


이것도 에러뜨고 작동이 안 되는데

조형기한테 받혀죽어서 작동이 안되는게 아니라


반환을 안한다고 했는데 반환한 값을 출력해라! 이러니까 에러가 뜨는거다


진짜 진짜 마지막으로 초급반 가보면 흔히 나오는 실수가 있는데



메소드 안에는 메소드를 또 못 넣는다

메인 메소드도 Method기 때문에

클래스 안이 아니라 메인 메소드 안에 메소드 넣어놓고

안된다고 손들면 존나 맞는거다



반응형

'IT > Java' 카테고리의 다른 글

자바 2차원 배열 알아보기  (0) 2019.01.16
자바 배열 알아보기  (0) 2019.01.15
자바 객체화 알아보기  (2) 2019.01.13
자바 Dead Code 알아보기  (0) 2019.01.12
자바 삼항연산자 알아보기  (0) 2019.01.08

댓글