개발자 도전기
[JAVA] 클래스 - 메소드(method) 본문
메소드 선언은 객체의 동작을 실행 블록으로 정의하는 것을 말하고, 메소드 호출은 실행 블록을 실제로 실행하는 것을 말한다. 메소드는 객체 내부에서도 호출되지만 다른 객체에서도 호출될 수 있다.
1. 메소드 선언
리턴타입 메소드명 (매개변수, ...) {
실행 블록
}
리턴 타입
메소드가 호출한 곳으로 전달하는 결과값의 타입을 말한다. 리턴값이 없는 메소드는 void로 작성해야 한다,
리턴 타입이 있는 메소드는 반드시 실행 블록 안에서 return 문으로 리턴값을 지정해야 한다.
메소드명
메소드명은 첫 문자를 소문자로 시작하고, 캐멀 스타일로 작성한다
매개변수 (parameter)
매개변수는 메소드를 호출할 때 전달한 매개값을 받기 위해 사용된다.
매개값(argument)는 인자값, 인수라고도 불리며 실제로 메소드에 전달한 값을 말한다.
실행 블록
메소드 호출 시 실행되는 부분이
class C04Person {
String name;
// 파라미터 X
void run() {
System.out.println(name + "이 달립니다");
}
// 파라미터 o
void walk(int speed) {
System.out.println(name + "이" + speed+ "의 속도로 걷습니다");
}
// 리턴타입
int maxspeed(int a, int b) {
return a + b;
}
}
2. 메소드 호출
메소드를 호출한다는 것은 메소드 블록을 실행하는 것을 말한다. 메소드는 객체의 동작이므로 메소드 호출은 객체 생성 후 가능하다.
객체 내부에서는 단순히 메소드명으로 호출하면 되지만, 외부 객체에서는 참조 변수와 도트(.) 연산자를 이용해서 호출한다, 또한 메소드가 매개변수를 가지고 있을 때는 호출할 때 매개변수의 타입과 수에 맞게 매개값을 제공해야 한다.
public class C03Method {
public static void main(String[] args) {
C04Person john = new C04Person();
C04Person jane = new C04Person();
john.name = "john";
jane.name = "jane";
int speed = 50;
jane.maxspeed(10, 20);
john.run(); // "john이 달립니다."
jane.walk(speed); "jane이 50의 속도로 걷습니다."
}
}
3. 가변길이 매개변수
메소드가 가변길이 매개변수를 가지고 있다면 매개변수의 개수와 상관없이 매개값을 줄 수 있다.
다음과 같이 선언한다
int sum(int ... values){
}
가변길이의 매개값들은 자동으로 배열 항목으로 변환되어 메소드에서 사용된다. 배열 타입의 변수처럼 사용할 수 있고 메소드 호출 시 직접 배열을 매개값으로 제공해도 된다.
public class ComputerExample {
public static void main(String[] args) {
Computer myCom = new Computer();
int result1 = myCom.sum(1, 2, 3);
System.out.println("result1 = " + result1);
int result2 = myCom.sum(1, 2, 3, 4, 5);
System.out.println("result2 = " + result2);
int[] values = {1, 2, 3, 4, 5};
int result3 = myCom.sum(values);
System.out.println("result3 = " + result3);
int result4 = myCom.sum(new int[]{1, 2, 3, 4, 5});
System.out.println("result4 = " + result4);
}
}
public class Computer {
int sum(int... values) {
int sum = 0;
// values 는 배열 타입의 변수처럼 사용
for (int i = 0; i < values.length; i++) {
sum += values[i];
}
return sum;
}
}
가변길이 매개변수를 다른 타입과 함께 사용하고 싶다면 꼭 마지막 순서에 넣어야 한다.
// 다른 파라미터와 함께 사용시 꼭 마지막에 넣어야 함
void method3(String s, int... a) {
}
4. 메소드 오버로딩
메소드 오버로딩은 메소드 이름은 같으면서 매개변수의 타입, 개수, 순서가 다른 메소드를 여러개 선언하는 것을 말한다.
리턴타입은 무관하지만 매개변수의 타입, 개수, 순서가 달라야 한다.
public class CalculatorExample {
public static void main(String[] args) {
Calculator myCalcu = new Calculator();
// 정사각형의 넓이 구하기
double result = myCalcu.areaRectangle(10);
// 직사각형의 넓이 구하기
double result2 = myCalcu.areaRectangle(10, 20);
System.out.println("정사각형의 넓이 = " + result);
System.out.println("직사각형의 넓이 = " + result2);
}
}
public class Calculator {
//정사각형의 넓이
double areaRectangle(double width) {
return width * width;
}
// 직사각형의 넓이
double areaRectangle(double width, double height) {
return width * height;
}
}
'개발공부 > JAVA' 카테고리의 다른 글
[JAVA] 클래스 - 정적 멤버(static) (0) | 2024.03.05 |
---|---|
[JAVA] 클래스 - 생성자(Constructor) (0) | 2024.03.05 |
[JAVA] 클래스 - 필드(field) (0) | 2024.03.04 |
[JAVA] 객체와 클래스 (0) | 2024.03.04 |
[JAVA] 형변환 방법 모음 (0) | 2024.03.01 |