Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자 도전기

[JAVA] 클래스 - 메소드(method) 본문

개발공부/JAVA

[JAVA] 클래스 - 메소드(method)

jnnjnn 2024. 3. 4. 22:12

메소드 선언은 객체의 동작을 실행 블록으로 정의하는 것을 말하고, 메소드 호출은 실행 블록을 실제로 실행하는 것을 말한다. 메소드는 객체 내부에서도 호출되지만 다른 객체에서도 호출될 수 있다.

 

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