자바의 기본 구조
자바의 코드는 기본적으로 클래스로 구성된다. 각 클래스는 변수/메소드 등으로 이루어져 있다.
클래스
클래스는 자바 프로그래밍에서 객체 지향 프로그래밍의 기본 단위이다. 클래스는 객체를 생성하기 위한 템플릿이며, 객체의 상태와 동작을 정의하는데 사용된다.
자바 코드의 가장 바깥쪽 영역이 클래스 블록이다. 클래스명은 사용자의 마음대로 지을 수 있지만, 클래스명은 소스 파일의 이름과 같아야 한다. 클래스 블록은 여러 메소드 블록을 포함한다.
// 클래스 블록
public class 클래스명 {
// 메소드 블록
// [public/private/protected] [static] (리턴자료형/void) 메서드명1(입력자료형 매개변수 , ....)
public static void main(String[] args) {
// 명령문 (statement);
String text = "java";
System.out.println(text);
}
// 메소드 블록
private static String getById(String id){
return id;
}
}
메소드/메서드
메소드는 객체 지향 프로그래밍의 핵심 개념 중 하나이며, 객체의 동작을 정의하고 사용자가 객체와 상호작용할 수 있도록 한다.
[접근 제어자] [반환 타입] 메소드명(매개변수) {
// 메소드 내용
}
- 접근 제어자
메소드에 접근할 수 있는 범위를 지정한다. public, private, protected 등이 사용될 수 있다. 접근 제어자를 생략하면 기본적으로 public 으로 간주한다.
- 반환 타입
메소드가 실행을 마친 후에 반환하는 값의 타입을 지정한다. 반환 값이 없을 경우 void 로 지정한다. 리턴 값이 있을 경우에는 반드시 리턴 자료형을 표기해야 하며, 없는 경우 void 로 표기해야 한다.
- 메소드명
메소드의 이름을 나타낸다. 식별자 규칙을 따라 유효한 이름을 사용해야 한다.
- 입력자료형, 매개변수 등
메소드명 뒤에 이어지는 괄호 안의 값들은 메소드가 호출될 때 전달되는 값들을 나타내는 변수들을 선언한다. 매개변수가 없을 경우 빈 괄호() 를 사용한다. 입력인자는 '입력자료형 + 매개변수명' 형태로 이루어지며 개수에 제한이 없다.
메소드의 역할
1. 코드의 재사용
- 메소드를 사용하여 특정한 동작을 수행하는 코드를 재사용할 수 있다. 코드의 중복을 피하고 코드 가독성을 높일 수 있다.
2. 코드의 모듈화
- 메소드는 하나의 독립적인 기능을 수행하는 코드 블록으로, 큰 프로그램을 작은 모듈로 나누어 개발할 수 있게 해준다. 각각의 메소드는 특정한 동작을 캡슐화하여 코드의 구조를 명확하게 만들어준다.
3. 가독성과 유지 보수성의 향상
- 메소드는 코드를 논리적으로 분리하고 이름을 통해 의도를 명확하게 전달할 수 있다. 이로 인해 코드의 가독성이 향상되며, 유지 보수성도 향상된다.
4. 매개변수를 통한 데이터 전달
- 메소드는 매개변수를 통해 외부에서 데이터를 전달받을 수 있다. 이를 활용하여 메소드 내에서 필요한 데이터를 전달받고 처리할 수 있다.
메인 메소드
이 메인 메소드는 프로그램의 시작점(entry point)으로, 자바 가상 머신(JVM, Java Virtual Machine) 이 프로그램을 시작할 때 이 메소드를 호출한다.
// 메인 메소드
public static void main(String[] args) {
//main 메소드 내용
}
- public: 접근 제어자로, 이 메소드가 다른 클래스에서도 접근 가능함을 나타낸다.
- static: 정적 메소드로, 객체 생성 없이 클래스 이름으로 직접 호출할 수 있다.
- void: 반환 값이 없음을 나타낸다.
- main: 메소드 이름으로, 프로그램이 실행될 때 자동으로 호출된다.
- String[] args: 매개변수로, 문자열 배열 형태의 인수를 전달받는다. 이 배열은 프로그램 실행 시 커맨드라인에서 전달되는 인수들을 담고 있다.
속성과 생성자
자바 코드에는 속성과 생성자도 구성 요소로 포함된다.
속성은
클래스의 상태를 나타내는 변수로, 클래스 내부에 선언된다.
생성자는
클래스 인스턴스를 생성할 때 실행된느 메소드로, 주로 속성을 초기화하는 용도로 사용한다.