더북(TheBook)

객체 지향 프로그래밍에서는 객체가 속한 클래스에 객체의 동작을 정의하고, 객체를 사용해 작업을 수행한다. 자바는 객체 지향 프로그래밍을 완전히 수용한 첫 번째 주류 프로그래밍 언어다. 이미 설명했듯이 자바는 모든 메서드를 클래스 안에 선언하며, 기본 타입을 제외한 모든 값이 객체다. 이 장에서는 클래스와 메서드를 직접 구현하는 방법을 배운다.

2장의 핵심 내용을 정리하면 다음과 같다.

1. 변경자 메서드는 객체 상태를 변경하지만, 접근자 메서드는 객체 상태를 변경하지 않는다.

2. 자바에서 변수는 객체가 아니라 객체 참조를 저장한다.

3. 클래스 선언1 안에 인스턴스 변수와 메서드 구현을 선언한다.

4. 인스턴스 메서드는 객체로 호출하며, 호출된 메서드에서는 이 객체를 this 참조로 접근할 수 있다.

5. 생성자는 클래스와 이름이 같다. 클래스 안에 오버로드된 생성자를 여러 개 포함할 수 있다.

6. 정적 변수는 어떤 객체에도 속하지 않는다. 정적 메서드는 객체로 호출하지 않는다.

7. 클래스는 패키지로 조직화된다. 임포트 선언을 하면 프로그램 안에서 패키지 이름을 쓰지 않아도 된다.

8. 클래스 안에 다른 클래스를 선언할 수 있다.

9. 내부 클래스는 비정적 중첩 클래스다. 내부 클래스의 인스턴스는 자신을 생성한 바깥쪽 클래스의 객체를 참조한다.

10. javadoc 유틸리티는 소스 파일을 처리해 선언된 내용과 프로그래머가 작성한 주석으로 HTML 파일을 만든다.


1 C/C++처럼 헤더 파일(.h)과 구현 파일(.c, .cpp)을 분리해서 사용하는 언어는 헤더 파일에 클래스를 선언하고 구현 파일에 클래스를 정의한다. 하지만 자바는 헤더 파일과 구현 파일을 분리하지 않으므로 클래스를 선언하면서 내용을 정의한다. 자바 세계에서 ‘클래스 선언’, ‘메서드 선언’ 등으로 칭하는 용어가 다른 언어에서는 선언과 정의를 동시에 지칭할 수 있다는 것을 염두에 두자(물론 ‘인터페이스 안에 추상 메서드를 선언한다’고 할 때는 그 메서드 헤더만 선언하는 것을 의미한다).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.