본문 바로가기
Java 배우기

Method 메소드

by 노화방지 Anti-aging Hairstyle 2016. 1. 4.
반응형

아래는 전형적인 메소드 선언 (method declaration)의 예제입니다.



public double calculateAnswer (double wingSpan , int numberOfEngines ,

                             double length , double grossTons ) {

   //여기서 계산합니다

}



메소드 선언에서 요구되는 항목들은 메소드의 return type, 이름, 한 쌍의 괄호 (), 그리고 중괄호 {} 사이의 body 들 뿐입니다.

The only required elements of a method declaration are the method's return type, name, a pair of parentheses, (), and a body between braces, {}.



보다 일반적으로, 메소드 선언은 다음 순서 대로 6개의 구성요소를 갖고 있습니다:

More generally, method declarations have six components, in order:


  • 접근제한자(Modifiers)—public, private 및 기타

  • 리턴타입(The return type)—메소드가 반환하는 데이터의 타입 또는 메소드가 값을 반환하지 않는 경우의 void(the data type of the value returned by the method, or void if the method does not return a value).

  • 메소드 이름(The method name)—메소드 이름에 적용되는 필드이름을 위한 규칙(the rules for field names apply to method names as well, but the convention is a little different).

  • 괄호 안의 패러미터 목록(The parameter list in parenthesis)—쉼표로 구분되는 투입 패러미터의 목록. 데이터 타입이 먼저 오고 괄호로 둘러쌈(a comma-delimited list of input parameters, preceded by their data types, enclosed by parentheses, (). If there are no parameters, you must use empty parentheses).

  • 예외 목록(An exception list)—뒤에서 논의(to be discussed later).

  • 중괄호 안의 메소드 몸체(The method body, enclosed between braces)—로컬 변수 선언을 포함한, 메소드의 코드(the method's code, including the declaration of local variables, goes here).


Modifiers, return types, and parameters will be discussed later in this lesson.

Exceptions are discussed in a later lesson.


정의: 메소드 선언의 2개 구성요소가 메소드 시그니처(메소드 이름패러미터 타입)을 구성합니다. Definition: Two of the components of a method declaration comprise the method signature—the method's name and the parameter types.


위에 선언된 메소드의 시그니처는 calculateAnswer(double, int, double, double) 입니다. The signature of the method declared above is: calculateAnswer(double, int, double, double)



메소드 이름 짓기 Naming a Method


어떤 리걸 식별자도 메소드 이름으로 사용할 수 있지만, 코드 협약은 메소드 이름을 제한합니다. Although a method name can be any legal identifier, code conventions restrict method names.

협상에 따르면, 메소드 이름은 소문자의 동사 또는 소문자로 시작되어 형용사, 명사 등으로 이어지는 복합-단어 이름이어야 합니다.

By convention, method names should be a verb in lowercase or a multi-word name that begins with a verb in lowercase, followed by adjectives, nouns, etc.

복합-단어 이름에서, 두 번째 및 이어지는 단어들의 첫 째 글자는 대문자이어야 합니다. In multi-word names, the first letter of each of the second and following words should be capitalized.


아래는 그 예입니다: Here are some examples:


run

runFast

getBackground

getFinalData

compareTo

setX

isEmpty

일반적으로 메소드는 그 클래스 안에서 유일한 이름을 갖게 됩니다. Typically, a method has a unique name within its class.

하지만 메소드는 메소드 오버로딩 때문에 다른 메소드와 같은 이름을 가질 수도 있습니다. However, a method might have the same name as other methods due to method overloading.


메소드 오버로딩 Overloading Methods


자바 프로그램밍 언어는 오버로딩 메소드를 지원하며, 자바는 서로 다른 메소드 시그니처를 가진 메소드들을 구분합니다. The Java programming language supports overloading methods, and Java can distinguish between methods with different method signatures. 이 말은 메소드들이 서로 다른 패러미터 목록을 갖고 있다면 1개의 클래스 안에서 메소드의 이름이 같을 수 있다는 것을 의미합니다.

This means that methods within a class can have the same name if they have different parameter lists (there are some qualifications to this that will be discussed in the lesson titled "Interfaces and Inheritance").


다양한 타입의 데이터를 그릴 수 있는 서예를 사용할 수 있고, 각 테이터타입별로 그릴 수 있는 메소드를 갖고 있는 클래스가 있다고 가정합니다. Suppose that you have a class that can use calligraphy to draw various types of data (strings, integers, and so on) and that contains a method for drawing each data type. 각 메소드 별로 새 이름을 갖는다는 것은 번거로운 일입니다 - 예를 들면 drawString, drawInteger, drawFloat 등.

It is cumbersome to use a new name for each method—for example, drawString, drawInteger, drawFloat, and so on. 자바 프로그래밍 언어에서는, 각 메소드 별로 아규먼트 목록이 다르다면 모든 그리기 메소드의 이름을 동일하게 사용할 수 있습니다.

In the Java programming language, you can use the same name for all the drawing methods but pass a different argument list to each method.

이와 같이, 데이터 그리기 클래스는 draw 라는 이름을 가진 4개의 메소드를 선언할 수 있는데, 각각의 패러미터는 다릅니다. Thus, the data drawing class might declare four methods named draw, each of which has a different parameter list.


public class DataArtist {

   ...

   public void draw(String s) {

       ...

   }

   public void draw(int i) {

       ...

   }

   public void draw(double f) {

       ...

   }

   public void draw(int i, double f) {

       ...

   }

}


오버로드된 메소드들은 아규먼트의 갯수와 타입으로 구분됩니다. Overloaded methods are differentiated by the number and the type of the arguments passed into the method.

견본 코드에서, draw(String s)와 draw(int i)는 이들이 서로 다른 아규먼트 타입을 요구하기 때문에 구별되는 각각 유일한 메소드입니다. In the code sample, draw(String s) and draw(int i) are distinct and unique methods because they require different argument types.


동일한 이름 그리고 동일한 아규먼트 숫자와 타입을 가진 2개 이상의 메소드를 선언할 수 없는데, 그 이유는 컴파일러가 메소드들을 구분할 수 없기 때문입니다. You cannot declare more than one method with the same name and the same number and type of arguments, because the compiler cannot tell them apart.


컴파일러는 메소드를 구분할 때 리턴 타입을 고려하지 않기 때문에, 서로 다른 리턴 타입을 갖고 있다 하더라도 동일한 시그니처를 가진 2개의 메소드를 선언할 수 없습니다. The compiler does not consider return type when differentiating methods, so you cannot declare two methods with the same signature even if they have a different return type.


참고: 오버로드된 메소드들은 sparingly 사용되어야 하는데 그 이유는 메소드들이 읽기 어렵기 때문입니다. Note: Overloaded methods should be used sparingly, as they can make code much less readable.



반응형

댓글