메소드 선언은 객체의 동작을 실행 블록으로 정의하는 것
메소드는 객체 내부에서도 호출되지만 다른 객체에서도 호출될 수 있기 때문에 객체간의 상호작용하는 방법을 정의 하는 것이다.
다음 코드는 메소드를 선언하는 방법을 보여준다
리턴타인 메소드명 (매개변수,```_{
//code
}
리턴 타입은 메소드가 실행한 후 호출한 곳으로 전달하는 결과값의 타입을 말한다. 리턴값이 없는 메소드는 void로 작성해야 한다.
void powerOn{ ...}
double divide(int x, int y){ ...}
메소드 명은 첫 문자를 소문자로 시작하고, 캐멀 스타일로 작성한다. 다음은 잘 작성된 메소드명을 보여준다.
void run() {...}
void setSpeed(int speed) {...}
String getName() {...}
매개변수는 메소드를 호출할 때 전달한 매개값을 받기 위해 사용된다. 다음 예에서 divide() 메소드는 연산할 두 수를 전달받아야 하므로 매개변수가 2개 필요하다.
double divide(int x , int y) {...}
[그림] 메소드 작성 예시
메소드를 호출한다는 것은 메소드 블록을 실행하는 것을 말한다.
객체 내부에서는 단순히 메소드명으로 호출이 가능하지만, 외부 객체에서는 참조 변수와 도트(.)연산자를 이용해서 호출한다. 또 , 메소드가 매개변수를 가지고 있을 때는 호출할 때 매개변수의 타입과 수에 맞게 매개값을 제공해야한다.
타입 변수 = 메소드();
[그림] 메소드 호출 예시
가변길이 매개변수는 메소드 호출 시 매개갑을 쉼표로 구분해서 개수와 상관없이 제공할 수 있다.
int[] values = {1,2,3};
int result = sum(values);
int result = sum(new int[] {1,2,3});
[그림] 가변길이 매개변수 메소드 작성 예시
메소드 오버로딩은 메소드 이름은 같되 매개변수의 타입, 개수, 순서가 다른 메소드가 여러개 선언하는 것을 말한다.
class a {
int a (int b) {...}
int a (int c,int d) {...} //메소드 이름이 중복-> 오버로딩
}