- Java에서 Class는 멤버로 속성을 표현하는 필드기능을 표현하는 Method를 가진다.

- Method는 어떤 특정 작업을 수행하기 위한 명령문의 집합체라고 할 수 있다.

 

[ 사용 목적 ]

 - 클래스에서 메소드를 작성하여 사용하는 이유는 중복되는 코드의 반복적 작성을 피할 수 있기 때문이다.

 - 또한, 모듈화로 코드의 가독성도 좋아진다.

 - 프로그램에 문제가 발생하거나, 기능 변경이 필요할 때에도 손쉽게 유지보수를 할 수 있다.

 ※ 중요한점은 메소드를 작성할 때에는 각 메소드마다 하나의 기능만을 수행하도록 작성하는것이 좋다.

 

[ 메서드의 정의 ]

     public      void	main(String[] args) {  }
// [접근제어자][반환타입][메소드명(매개변수)]

 - 접근제어자 : 해당 메소드에 접근할 수 있는 범위를 명시.

 - 반환 타입(Return Type) : 메소드가 모든 작업을 마치고 반환하는 데이터의 타입을 명시.

 - 메소드 명 : 호출 시 사용하는 이름을 명시.

 - 매개변수(Parameters) : 메소드 호출 시 전달되는 인수위 값을 저장할 변수를 명시

※ 메소드 시그니처(Method Signature)란?

   - 메소드의 선언부에 명시되는 매개변수의 리스트를 가르킨다.

   - 만약 두 메소드가 매개변수의 갯수와 타입, 순서까지 모두 같다면, 이 두 메소드의 시그니처는 같아고 할 수 있다.

 

[ 매개변수의 형태 ]

  // 1. 매개변수가 있고, 리턴이 없음.
  // main 메소드
  public static void main(String[] args) {
    System.out.println("== 1. main Mathod 시작 ==");
    increment(5);
    System.out.println("== 2. main Method 종료 ==");
  }

  // method 정의 형태
  // 기능 : 인수로 받은 값을 1증가 후 출력
  public static void increment(int num) {
    System.out.println("== 3. increment Method 시작 ==");
    num++;
    System.out.println("1 증가된 값 : " + num);
    System.out.println("== 4. increment Method 종료 ==");
  }
    
  // 2. 매개변수가 있고, 리턴이 있음.
  public static void main(String[] args) {
    System.out.println("sum : " + sum(2, 5));
  }

  // 기능 : 인수로 정수 2개를 받은 후, 덧셈 결과를 리턴
  // 메소드명 : sum, 매개변수 : 2개
  public static int sum(int num1, int num2) {
    int result = num1 + num2;
    return result; // method의 끝을 의미
  }
    
  // 3. 매개변수가 없고, 리턴이 없음.
  public static void main(String[] args) {
    showString();
  }

  // 기능 : 호출하면 문자열 출력
  // 메소드명 : showString, 매개변수 : void
  public static void showString()  {
    System.out.println("-------------------------------------");
    System.out.println("showString() 메소드 실행됨");
    System.out.println("-------------------------------------");
  }
    
  // 4. 매개변수가 없고, 리턴이 있음.
  public static void main(String[] args) {
    System.out.println(returnString());
  }
	
  // 기능 : 호출하면 문자열 리턴
  // 메소드명 : returnString, 매개변수 : void
  public static String returnString() {
    return "안녕~~";
  }

 

 

[ 예제 ]

class Car {
    private int currentSpeed;
    private int accelerationTime;
    
    public void accelerate(int speed, int second) {
    	System.out.println(second + "초간 속도를 시속 " + speed + "(으)로 가속함!!");
    }
}

- 예제를 보면 accelerate() Method를 정의하고있다.

- 해당 메소드에서 접근제어자로 public을 사용하여 선언되어 해당 객체를 사용하는 프로그램 어디에서나 직접 접근이 가능하다.

 - 반환 타입에는 어떠한 값도 반환하지 않는다는 의미로 void를 사용하였다.

 - 그 다음, 메소드의 이름을 명시하고, 매개변수로 int형인 변수를 전달받았다.

 - 이렇게 전달받은 매개변수로 구현부에서 작업을 할 수 있다.

 

[ 메소드 호출방법 ]

// 1. 매개변수 없는 메소드호출 : 객체참조변수이름.메소드이름();
Car myCar = new Car();
// 2. 매개변수 있는 메소드호출 : 객체참조변수이름.메소드이름(매개변수1, ...);
Car myCar = new Car(60, 3);

 - 위 예제를 호출할 시, 다음과 같이 사용할 수 있다.

 

[ 실제 사용 예시 ]

[ Car.Class ]

class Car {
  private int currentSpeed;
  private int accelerationTime;
  
  public void accelerate(int speed, int second) {
    System.out.println(second + "초간 속도를 시속 " + speed + "(으)로 가속함!!");
  }
}

 

[ Car_Main.Class ]

public class Car_Main {
  public static void main(String[] args) {
    Car myCar = new Car(); // 객체 생성
    mycar.accelerate(60, 3); // 메소드 호출단
  }
}

 


위 메소드를 호출하여 사용하면 다음과 같은 결과를 얻을 수 있다.

더보기

실행결과 : 3초간 속도를 시속 60(으)로 가속함!!


[ 메서드의 오버로딩 ]

 

+ Recent posts