객체에 동작에 해당하는 중괄호 { } 블록을 말합니다.
중괄호 블록 이름이 메소드 이름이며, 메소드를 호출하면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행됩니다.
메소드 선언부를 메소드 시그니처(Signature)라고 하며, 선언부와 실행 블록에는 다음 요소를 포함합니다.
메소드 선언은 선언부(리턴 타입, 메소드 이름, 매개 변수 선언)와 실행 블록으로 구성됩니다.
리턴 타입은 리턴값의 타입을 말합니다. 리턴 값이란 메소드르 실행한 후의 결과값을 말합니다.
메소드는 리턴값이 있을 수도 있고 없을 수도 있느나 리턴값이 있을 경우 리턴 타입이 선언부에 명시되어야 합니다.
리턴이 없을땐 메소드 앞에 void를 적어서 리턴이 없다고 표시해야 합니다.
매개 변수는 메소드가 실행할 때 필요한 데이터를 외부로부터 받기 위해 사용됩니다.
왼쪽이 선언, 오른쪽이 호출
매개 변수를 배열 타입으로 선언하면 됨.
매개 변수의 개수를 모를 경우
int sum2(int... values){ }
선언부
public class Car2 {
// 필드
int gas;
// 생성자
// 메서드
// setGas 메서드 선언
void setGas(int gas) {
this.gas = gas;
}
// isLeftGas 메서드 선언
boolean isLeftGas(){
if(gas == 0) {
System.out.println("gas가 없습니다");
return false;
}// 리턴 값이 boolean인 메소드로 gas 필드값이 0이면 false를 , 0이 아니면 true를 리턴
System.out.println("gas가 있습니다");
return true;
}
// run 메서드 선언
void run() {
while(true) {
if(gas > 0) {
System.out.println("달립니다.(gas잔량 : "+ gas + ")");
gas -= 1;
}else {
System.out.println("멈춥니다.(gas잔량 : "+ gas + ")");
return;
// void인데 return이 들어가있음 이게뭐냐? ->
}
}
}
}
public class Car2Example {
public static void main(String[] args) {
Car2 myCar = new Car2();
// setGas메서드 호출
myCar.setGas(5);
// isLeftGas메서드 호출
boolean gasState = myCar.isLeftGas(); //true가 됨.
// run메서드 호출
if(gasState) {
System.out.println("출발합니다.");
myCar.run(); //run메서드 호출
}
if(myCar.isLeftGas()) { //Car의 isLeftGas() 메소드 호출
System.out.println("gas를 주입할 필요가 없습니다."); //가져온 값이 true값이면
}else {
System.out.println("gas를 주입하세요."); //가져온 값이 false이면
}
}
}
클래스 내부에서 다른 메소드를 호출할 경우 다음과 형태로 작성함
메소드 ( 매개값, ...);
클래스 참조 변수 = new 클래스( 매개값, ... );
참조변수.메소드(매개값, ...); // 리턴값이 없거나, 있어도 리턴값을 받지 않을 경우
타입 변수 = 참조변수.메소드( 매개값, ...); // 리턴값이 있고, 리턴값을 받고 싶을 경우
메소드 오버로딩(method overloading) : 클래스내에 같은 메소드를 여러개 선언하는것
오버로딩의 사전적 의미는 싣는것을 의미하며 하나의 메소드 이름으로 여러 기능을 담는다 하여 붙여진 이름이다.
메소드 오버로딩의 조건 : 매개 변수의 타입, 개수, 순서 중 하나가 달라야 한다.
끝