-
함수에 대해 설명하기 전에 간단히 hello라는 글자가 출력되는 함수를 만들고,
해당 함수를 보며 함수에 대해 설명해 드리겠습니다.
이클립스에서 함수를 만들기 위해서는 먼저 자바프로젝트와 클래스를 만들어야 합니다.
자바 프로젝트를 만들기 위해서는 상단 메뉴바의 파일 > New > other로 들어가서,
자바 프로젝트를 클릭해 주시고 하단의 넥스트를 클릭하시면 됩니다.
그러면 다음과 같이 프로젝트명과 몇가지 초기 설정을 할 수 있는 창이 나옵니다
해당 화면에서 다양한 초기설정을 할 수 있지만 지금은 프로젝트 이름만 설정하고 finish하도록 하겠습니다.
이제 자바 프로젝트를 만들었으니 바로 클래스를 만들도록 하겠습니다.
클래스는 해당 프로젝트 안에 src라는 폴더 안에 만들어 주겠습니다.
src폴더를 우클릭 하시고 new > class
그러면 아래와 같이 클래스를 만드는 설정창이 나옵니다.
클래스의 이름을 설정하고 finish를 누르시면 클래스가 만들어집니다.
추후에 설명하겠지만 클래스가 구동되기 위해서는 메인이 필요한데 중간에 보이는 체크를 하면, 자동으로 메인이 만들어집니다. 다만 모든 클래스가 메인을 필요로 하는 것은 아니므로 필요에 따라 체크를 하거나, 추후에 직접 타이핑 할 수 있으므로 저는 체크를 하지 않았습니다.
자바에서는 이름을 지을 때 다양한 사람들이 다른사람의 코드를 봤을 때 혼선을 줄이고자 몇가지 약속이 있습니다.
간단한 약속이므로 이후에 코딩을 할 때에도 스스로와 다른 사람들을 위해 해당 규칙을 준수하는 습관을 들입시다.
특히 4번의 경우 여러사람이 공동으로 프로젝트를 할 때 a,aa,aaa와 같이 의식의 흐름대로 이름을 지으면 추후에 문제가 발생했을 때 코드 전체를 밀어버리고 다시 만드는게 더 나을 수 있으므로 조심해야 합니다.
1.class명의 첫글자는 대문자로 작성한다.
2.Field(변수),Method는 소문자로 작성한다.
3.합성어를 쓸때는 합쳐지는 단어의 첫글자는 무조건 대문자로 쓴다.
4.항상 기능에 맞는 이름을 짖는다.그후 아래와 같이 입력하고 위쪽에 paly버튼을 클릭하시면 저장하시겠냐는 팝업창이 뜨고,
이후 저와같이 아래쪽 콘솔창에 hello라는 글자가 출력되는 것을 확인 할 수 있습니다.
입력 내용
public static void main(String[] args) {
System.out.println("hello");
}이제 위 코드를 보며 함수에 대해 설명해 드리겠습니다.
패키지
먼저 첫번째 줄의 pacpackage firstProject의 경우 해당 패키지 내부에 있다는 뜻입니다.
src폴더를 보시면 firstProject라는 폴더가 생기고 해당 폴더 안에 Sayhello라는 클래스가 생긴것을 확인 할 수 있는데.
이 src폴더 아래에 있는 firstProject가 패키지이고, 하나의 프로그램을 구동하기 위해 만들어진 여러개의 클래스들을 담아놓는 기능을 합니다.
만약 코드를 복사해서 붙이는 일이 발생한다면 해당 클래스가 있는 패키지의 이름으로 변경하면 무리없이 코드가 돌아가는 것을 확인 할 수 있습니다.
클래스
이후 클래스를 선언하는 부분인데 모양은 아래와 같습니다.
public class SayHello {
}기본 형태를 보시면 아래와 같습니다.
접근지정자 class 클래스 이름{
중괄호 안에 내용.
}여기서 접근지정자에 대한 설명이 필요한데,
자바는 객체 지향 언어로 기능과 용도에 맞게 객체 단위로 나누어서 프로그램을 구성하는데, 이때 나눈 객체들이 서로에게 접근하여 필요로 하는 기능을 사용고자 할 때, 어느정도 범위 내에 있는 객체들만 접근 할 수 있게 할 것인지를 설정하는 부분입니다.
접근지정자는 아래와 같이 4개가 있고, 다음과 같은 범위에서 접근 하여 사용 할 수 있습니다.
접근 지정자 접근 범위 public 제한 없음 protected 동일 패키지와 상속받은 클래스 내부 default 동일 패키지 private 동일 클래스 위로 올라갈 수록 공개 정도가 가장 높고,
특별히 정보를 은닉해야하는 경우가 아니라면 public으로 선언하는 것이 일반적입니다.
상속에 대한 것은 추후에 포스팅을 통해 설명해 드리겠습니다.
함수(funtion) = method
현재 코드에서는 main 메소드 밖에 없지만 메소드는 특정 작업을 수행하기 위한 명령문의 집합이라고 할 수 있습니다.
현재의 main이라는 메소드는 hello라는 글자를 출력하는 동작을 수행하는 메소드 입니다.
main 메소드는 해당 프로그램을 실행할 때 가장 먼저 동작합니다.
따라서, main 메소드에는 프로그램의 구동 순서에 맞춰 다른 메소드들을 호출하고,
해당 class안에 printHello라는 메소드를 만들어 해당 메소드가 hello라는 글자를 출력하게 하는 것이 바람직합니다.
예시
하지만 이러한 형태는 hello라는 간단한 문자를 출력하는데에는 너무 복잡하고 객체 생성과 같은 다양한 자식이 필요하므로 추후 더 복잡한 코드를 다룰 때 설명하고, 현재는 함수의 기본 형태에 대해서만 설명하겠습니다.
메인 함수의 형태
public static void main(String[] args) {
}함수의 기본 형태
접근지정자 리턴타입 함수이름(매개변수타입 매개변수이름){
중괄호 안에 내용
}static
함수의 기본 형태에서 static은 제외 되어있는데, 이는 static이 특수한 경우에만 붙이기 때문입니다.
이를 설명하기위해서는 또한 객체 생성에 대한 설명이 필요한데, 간단히 설명하면 현재 main이라는 함수는 SayHello라는 클래스에 소속되어 있기 때문에 우리는 main함수를 호출(실행)하기 위해서는 SayHello라는 클래스에 들어가서 해당 클래스 안에 있는 main함수를 호출하여야 합니다.
하지만 main함수는 SayHello라는 클래스를 호출하는 순간 가장 먼저 자동으로 실행되어야 합니다.
이와같이 객체(클래스)에 접근 없이 호출 가능한 상태로 만들 어야 할 때 static으로 선언합니다.
추후에 코딩을 하다보면 같은 클래스 내부에 있는 함수를 사용하고자 하는데 사용하고자 하는 함수를 static으로 선언하라는 에러가 뜨는 경우가 있는데 이는 객체(클래스)에 접근 할 수 있도록 해주는 코드를 작성하지 않았기 때문일 확률이 높습니다.
다시 함수로 돌아와서
접근지정자의 경우 클래스의 접근 지정자와 같으므로 넘어가도록 하겠습니다.
클래스와 달리 메소드에는 리턴타입과 매개변수가 있는데,
매개변수는 해당 메소드가 동작하기 위해 필요로하는 변수이고, 리턴은 해당 함수가 동작하고나서 함수를 호출한 곳에 돌려줄 변수입니다.
간단히 integer(정수)두개를 입력받아 덧샘을 해주는 함수를 구성하여 예를 들어 드리겠습니다.
해당 메소드를 코딩하면 아래와 같습니다.
public int plus(int firstnumber , int secondnumber) {
int answer;
answer= firstnumber+secondnumber;
return answer;
}해당 코드를 위의 함수의 기본 형태와 비교하여 보면
접근 지정자는 public이고,
리턴타입은 int(integer(정수))
함수의 이름은 plus
매개변수는 int타입의 firstnumber와 같은 int타입의 secondnumber입니다.
동작의 형태는 int 타입의 answer이라는 변수를 만들고,
firstnumber와 secondnumber를 더한것을 answer이라는 변수에 담습니다.
이후 answer의 값을 리턴 해주는 형태 입니다.
만약 리턴타입이 있는 경우 반드시 함수 내부에 return을 이용하여 해당 값을 반환해 줘야합니다.
이와같이 함수는 특정 동작을 수행하기 위해 특정 변수를 필요로 하거나, 혹은 돌려줘야 하는 경우가 발생하는데,
이떄 상황에 맞게 리턴타입과 매개변수를 설정하시면 됩니다.
만약 매개변수가 필요 없는 경우에는 소괄호( )내부를 비워놓으면 되고,
리턴 타입이 없는 경우에는 리턴 타입 부분을 비워놓는 것이 아니라 void라고 적어주어야 합니다.
'JAVA' 카테고리의 다른 글
JAVA 및 eclipse다운로드 (0) 2020.01.28