본문 바로가기
프로그래밍/JAVA,JSP

Java - 메소드

by 판데스 2009. 12. 3.
반응형

메소드는 클래스에서 정의된 여러 종류의 변수들을 사용하여 정해진 기능들을 실행할 수 있도록 코드들을 선언한 것이다. 메소드는 다른 곳에서 인자를 주어 호출할 수도 있고, 정해진 자료형을 반환할 수도 있다.

1) 생성자

생성자는 클래스로부터 객체가 생성될 때 변수들을 초기화 하는데 사용하는 것으로 객체가 생성될 때 오직 한번만 자동으로 수행된다. 생성자는 일반 메소드와는 달리 특별한 메소드 로서 다음과 같은 특징을 가진다.

♤객체가 생성될 때마다 호출되는 메소드로서 선언된 객체가 new()에 의해서 메모 리가 할당될 때 자동적으로 실행 된다.

♤클래스 이름과 동일하다.

♤반환 값을 가지지 않는다.

♤메소드 지정자는 public, protected, private만이 가능하다.

♤생정자의 선두에 현재 클래스 안의 다른 생성자를 부르는 this()나 부모 클래스의 생성자를 부르는 super() 형대틔 메소드를 호출하여 사용할 수 있다.

♤생성자를 명시하지 않으면 상위 클래스의 생성자를 호출하여 실시한다.

 

일반적으로 객체가 생성될 때마다 클래스에 있는 모든 변수들을 별도의 초기화 메소드를 정의해서 객체를 생성할 때 객체를 초기화해 주어야 하는데, 생성자를 사용함으로서 객체의 생성과 초기화를 동시에 할 수 있으므로 프로그램이 보다 간결해 진다. 생성자의 형식은

“[접근 지정자] 클래스명(인자 리스트){

}” 선언한다.

접근 지정자를 parivate로 명시하면, 해당 클래스의 객체 에서만 생성자를 사용해서 초기화할 수 있다는 의미가 된다. 일반적으로 생성자는 다른 클래스에서 호출하여 사용하기 때문에 public으로 명시한다.

 

2) 생성자 중복

각 클래스는 각기 서로 다른 수의 인자를 가지거나 인자의 유형이 다른 동일한 이름을 가진 생성자를 여러 개 가져야 할 때가 있는데, 이를 위해 자바에서는 메소드 중복 이라는 방식을 제공한다. 메소드 중복은 메소드 인자의 개수나 순서에 따라 서로 다른 동작을 하도록 같은 이름의 메소드를 여러 개 정의하는 것이다. 생성자도 필요하다면 여러 개의 생성자를 정의할 수 있으며, 객체가 생성될 때 해당되는 생성자가 호출되어 객체를 초기화 한다.

 

3) this와 this()

this는 클래스 내에서 자기 자신을 가리키는 참조로 현재 사용중인 객체를 의미하며, 일반적으로 생성자나 메소드의 인가자 같은 이름을 사용하는 경우에 자신의 멤버나 메소드를 명확하게 구분하기 위해 사용한다. 또한, 객체 전체를 함수의 인자로 전달할 필요가 있을 때 this를 사용하기도 한다. 단, static 변수는 객체에 속하지 않으므로 this 키워드로 접근할 수 없다. this는 this.멤버변수명 이런 식으로 사용한다.

this 키워드는 생략이 가능하다 동일한 이름의 메소드의 인자나 메소드 지역변수에 의해서 객체 변수가 가려질 경우에는 객체 변수를 참조하기 위해서 this를 사용하여야 한다.

한편, 생성자에서 사용하는 this()는 클래스의 다른 생성자를 호출하는 함수로 맨 처음 부분에 나와야 한다. 만일 첫 번째 줄에 있지 않으면 컴파일 오류가 발생한다.

 

4) 일반 메소드

일반 메소드는 객체가 실행해야 할 기능을 기술한 것으로 객체 변수의 값을 읽어들이고, 조작하고, 출력하는 기능 등을 수행한다. 클래스의 이름과 상수는 일반적으로 대문자로 시작하며, 메소드와 일반 변수는 소문자로 시작하는 것이 자바 프로그래밍의 관례이다. 메소드는 다음 형식처럼 정의한다.

[접근 지정자] 반환형 메소드명(인자리스트){

지역변수 선언;

실행문장;

}

이 때, 메소드가 값을 반환하지 않는다면 반환형은 void로 명시해야 한다. 메소드도 클래스나 변수와 마찬가지로 접근 지정자를 가질 수 있다. 메소드의 접근 지정자는 다른 객체로부터 메소드의 접근을 제한한다.

메소드의 접근 지정자

접근 지정자

의미

사용 예

default

패키지 내부에서만 호출 가능함.

int javacode();

public

패키지 내부, 외부에서 모두 호출 가능함.

public int javacode();

protected

패키지 내부와 선언된 클래스, 하위 클래스에서 호출 가능함

protected int javacode();

provate

선언된 클래스 내에서만 호출 가능함(하위 클래스에서도 호출 불가능).

provate int javacode();

abstract

추상 메소드로 선언. 메소드 본체를 제외하고 반환형, 메소드 이름, 처리해야 할 예외, 인자 리스트만 선언함.

abstract int javacode();

static

클래스를 통해서 호출 가능. 보통 정적 필드를 다루기 위해 만들어 놓았음.

static int javacode();

final

한번 선언하면 하위 클래스에서 재 선언할 수 없음.

final int javacode();

synchronized

다중 쓰레드 사용시 동기화 되어야 할 메소드임을 선언함(오직 한번에 한 쓰레드 만이 이 함수를 실행시킬 수 있음)

synchronized int javacode();

native

네이티브 코드를 사용하는 메소드임.

native int javacode();

strictfp

보다 엄격한 부동 소수점 규격과 연산을 사용할 것을 나타냄.

strictfp int javacode();

 

반응형

'프로그래밍 > JAVA,JSP' 카테고리의 다른 글

JSP - JSP의 구성요소  (0) 2009.12.03
Java - 객체 지향의 개요  (0) 2009.12.03
Java - 클래스  (0) 2009.12.03
Java - 멤버 변수와 접근 지정자  (0) 2009.12.03
JAVA의 특징  (0) 2009.12.03