본문 바로가기
코딩/JAVA

메소드

by sonysame 2017. 4. 1.

메소드

클래스에는 인스턴스 변수와 더불어 메소드(Method)라는 것이 있다. 메소드는 클래스 내에 구현된 함수를 의미하는데 보통 함수라고 말하지 않고 메소드라고 말한다. 변수가 정적인 의미라면 메소드는 동적인 의미가 강하다. 말로 백번 하는것보다 실제 코드를 작성하는 것이 이해가 빠를 것이다.

이제 메소드를 이용하여 Animal 클래스의 인스턴스 변수인 name 에 값을 설정해 보자.

아래와 같이 setName 메소드를 추가 해 보자.

public class Animal {
    String name;

    public void setName(String name) {
        this.name = name;
    }

    public static void main(String[] args) {
        Animal cat = new Animal();
        cat.setName("boby");
        System.out.println(cat.name);
    }
}

setName 앞에 선언된 void는 메소드의 리턴타입을 말하는데 void는 리턴값이 없음을 의미한다. (※ void는 빈, 텅빈이라는 뜻이다.)

setName 메소드는 다음과 같이 입력으로 받은 문자열을 인스턴스 변수 name에 세팅한다.

public void setName(String name) {
    this.name = name;
}

위 코드의 this는 Animal 클래스에 의해서 생성된 인스턴스를 지칭한다. 만약 Animal cat = new Animal() 과 같이 cat이라는 인스턴스가 만들어 진다면 this는 바로 cat을 지칭하는 것이다.

※ 메소드의 입력과 출력은 다음 챕터에서 자세히 다루고 있다. 위에서 설명하는 메소드의 입력 및 출력의 의미가 잘 이해되지 않는다면 메소드 챕터를 먼저 보아도 좋다.

위 setName 메소드는 main 메소드에서 다음과 같이 사용되었다.

cat.setName("boby");

위 코드 수행 시 setName 메소드의 아래 문장이 수행된다.

this.name = name;

위 문장의 수행 과정을 단계적으로 살펴보자.

우선 입력 문자열로 "boby" 라는 값이 다음과 같이 대입된다.

this.name = "boby"

여기서 this 는 인스턴스 cat을 의미하므로 내부적으로는 다음과 같이 수행된다.

cat.name = "boby"

이런 과정으로 cat의 인스턴스 변수 name 에 "boby"라는 문자열이 대입된다.

위와같이 setName메소드가 호출되면 cat 인스턴스의 변수 name 에는 "boby"라는 값이 세팅될 것이다.

이제 Animal 클래스를 다시 실행 해 보자. cat.name을 출력한 결과는 다음과 같을 것이다.

boby


'코딩 > JAVA' 카테고리의 다른 글

상속  (0) 2017.04.01
call by value  (0) 2017.04.01
인스턴스 변수  (0) 2017.04.01
객체와 인스턴스  (0) 2017.04.01
for each  (0) 2017.04.01