티스토리 뷰

 

접근자 메서드와 변경자 메서드

호출되는 객체를 변경하는 메서드를 변경자, 객체를 변경하지 않는 메서드를 접근자라고 한다. 객체 변경은 위험할 수 있다. 특히 두 연산이 객체 하나를 동시에 변경할 때 발생된다. 이문제를 해결하는 방법 중 하나는 접근자 메서드만 제공해 불변 객체를 만드는 것이다.

 

객체 참조

C++ 같은 일부 프로그래밍 언어에서는 변수에 실제 객체를 담을 수 있다. 하지만 자바에서는 그렇지 않다. 변수에는 오직 객체 참조(reference)만을 담을 수 있다. 객체 참조를 담고 있는 변수를 다른 변수에 할당하면 같은 객체에 대한 참조를 갖게 된다.

 

클래스

인스턴스 변수는 객체의 인스턴스가 생성되었을 때 가질 수 있는 상태(변수)들이다. 인스턴스 변수는 보통 private로 선언하는데 이것이 바람직한 이유는 프로그램의 어느 부분이 변수를 변경할 수 있는지 제어하고, 언제든지 내부 표현을 변경할 수 있다는 것이다.

메서드는 대부분 public으로 선언한다. 때로는 헬퍼 메서드를 같은 클래스에 속한 다른 메서드에서만 사용하도록 제한하는 private으로 선언한다. 또 클래스 사용자와 관련이 없는 메서드는 특히 세부 구현에 의존할 때 private으로 선언해야 한다.

 

this 참조

객체에 있는 메서드를 호출할 때는 해당 객체를 this로 접근할 수 있다. 일부는 지역 변수와 인스턴스 변수를 명확히 구별하기 위해 사용하기도 한다.

 

값을 이용한 호출

메서드에 객체를 전달하면 해당 메서드가 객체 참조의 사본을 얻는다. 그리고 이 참조를 통해 메서드는 파라미터 객체에 접근하거나 파라미터 객체를 변경할 수 있다. 하지만 자바에서 기본 타입 파라미터를 업데이트하는 메서드를 작성할 수 없다. 이유는 메서드에서 복사된 값이 증가하고 줄어들긴 하지만 변수의 유효 범위를 벗어나고 나면 해당 연산의 효력을 잃는다.

마찬가지로 객체 참조를 다른 것으로 변경하는 메서드도 작성할 수 없다. 참조를 이용한 호출을 지원하는 프로그래밍 언어들은 파라미터 변수의 내용을 바꿀 수 있다. 자바에서는 기본 타입은 물론 객체 참조까지 모두 파라미터가 값으로 전달된다.

 

생성자

생성자는 해당 클래스의 이름으로 구현하고 생성했을 때 필요한 작업을 하면 된다.
생성자는 오버로딩이 가능하다 즉, 두 가지 이상 다른 버전의 생성자를 제공할 수 있다. 생성자 이름은 같지만 파라미터 개수, 종류가 다른 경우에 사용한다. 생성자를 안 쓰면 인자가 없는 디폴트 생성자를 자동으로 만들어 주는데 파라미터가 있는 생성자를 프로그래머가 만들면 디폴트 생성자는 생기지 않는다.

생성자 안에서 인스턴스 변수를 명시적으로 설정하지 않으면 자동으로 기본값이 설정된다. 숫자는 0, boolean값은 false, 객체 참조는 null이 기본값이다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함