brunch

You can make anything
by writing

C.S.Lewis

클래스멤버 - 메서드

* 이 내용은 철저히 초심자를 위해 알기 쉽게 설명하는 것을 목적으로 하고 있습니다.

* 더 정확하고 자세한 개념은 다른 고수님들의 글들을 참고하시길 바랍니다.

* 그리고 이 글에서는 코드 최소한으로 다루고 있습니다.


지난번에는 멤버의 개념과 생성자, 그리고 생성자 오버로드에 대해서 알아보았습니다.

이번엔 클래스의 멤버 중 메서드에 대해 알아보도록 하겠습니다.


메서드는 이미 우리가 어떤 녀석인지 알고 있습니다.

이 메서드가 class 안에 소속되어 있으면 우리는 이 녀석을 멤버 메서드라고 부릅니다.


클래스 안에 소속된 멤버 메서드는 클래스를 복사(객체화) 해 온 다음 사용이 가능합니다.


이렇게 복사해 온 객체의 멤버 메서드를 사용하는 과정을 코드로 풀이해 보자면 이렇습니다.

클래스 내 멤버를 사용하기 위해서는 반드시 객체 화를 해야 한다는 사실을 다시 한번 기억합시다.


메서드 오버로드

특정한 클래스에 메서드를 만들 수도 있으며 이것을 사용하는 방법도 배웠습니다.

이젠 우리의 코드로 다른 개발자들에게 도움을 줄 수 있습니다.

그래서 두 개의 숫자를 넣으면 더해서 그 결괏값을 알려주는 ‘엄청난?’ 기능의 메서드를 만들어 제공하려고 합니다.


하지만 숫자의 형태는 한 가지가 아닙니다.

일반 정수와 큰 크기의 정수, 소수점 수와 큰 소수점 숫자 등이 있습니다.

우리는 이해를 쉽게 하기 위해 이 임의로 크기 예시를 정해보도록 하겠습니다.


아무튼 이렇게 다양한 데이터타입을 조합하여 plus라는 메서드를 만들어 보도록 하겠습니다.

아마 상당한 수의 메서드가 나올 것입니다. 그런데 이들 역시도 같은 이름을 사용하면 안 됩니다.

그래서 이렇게 들어오는 매개변수의 타입에 따라 메서드의 이름을 각각 정해주어야 합니다.


이렇게 만들면서 하나하나 이름을 지어주는 것도 힘들지만 더더욱 문제는 이것을 사용하는 사람들입니다.

같은 더하기를 하더라도 들어가는 매개변수의 종류에 따라 메서드 이름을 다 알아야 할 지경에 이릅니다.

이러면 결국엔 ‘그냥 내가 만들어 쓰고 말지’라는 생각이 들 수도 있겠죠?


그래서 자바는 OOP의 철학 남의 것을 잘 가져다 쓸 수 있도록, 메서드 오버로드를 허용해 줍니다.

매개변수의 개수와 데이터 타입만 다르다면 모두 같은 이름을 써도 되도록 말이죠!


그럼 이제 메서드를 만든 사람은 이렇게 말할 수 있게 됩니다.

데이터 타입이 뭐가 되었든지 그냥 plus 메서드 a와 b에 값을 넣으세요!

어때요? 이러면 사용자 입장에서는 무척이나 편리하게 사용할 수 있겠죠?


내부적으로는 호출한 메서드의 매개변수의 타입에 따라 자동으로 메서드를 찾아 연결해 줍니다.


오버로드, 이 과적을 뜻하는 기능은 메서드에서도 유용한 녀석이지요?

생성자에 사용하면 객체화 시 다양한 방법으로 초기화가 가능하게 해 주었고, 메서드에 사용하면 사용자 입장에서 하나의 메서드로 여러 매개변수를 사용할 수 있게 해 주니까요.

매거진의 이전글 클래스 멤버 - 생성자
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari