저번에 객체화를 했으니 이번에는 메소드인데
객체화 개념이 없이 메소드를 이해할라면 감이 안올 수 있기 때문에
재빨리 오른쪽 카테고리의 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 |
댓글