프로그래밍/자바(java) 융합개발자 2차

[취성패] 자바 배우기 - 선수학습(메서드와 오버로딩)

aSpring 2020. 12. 12. 19:28
728x90
728x90

 

1. 메서드 정의

1) 메서드 개요

- 클래스 내에 위치하며 행위를 담당하는 프로그램 영역

- 메서드 문법

 

반환데이터형 메서드명(매개변수 리스트) {     -> 필요시 매개변수 리스트 적음(여러개일수도, 없을수도 있음)

  변수 선언;                                            -> 이 변수는 여기 안에서만 사용

  문장;                                                   -> 실행문, 덧셈, 뺄셈, 연산식 등

  return 반환 값;

}

 

* 메서드 문법

- 메서드 명은 식별자 선언 규칙에 따라 부여함

(영문자, 숫자 혼용, 밑줄문자, 단, 시작은 영문자로, 예약어/특수문자X, 대소문자 구별)

- 매개변수 리스트는 데이터형과 변수명으로 나타내며, 한 개도 없을 수도 있음(두개 이상 시 ,로 구분)

- 반환데이터형은 반환 값의 타입과 일치해야 하며 반환할 값이 없을 경우 void로 기술해야 함

- 반환 값이 없을 경우 return문은 생략 가능 아니면 return; 이렇게

 

 

2) 메서드 정의 및 활용

 

- 메서드 정의

ex) 반환 값이 없으며 문자열을 5번 출력하는 메서드 정의

void printString() {      -> () : 매개변수 리스트 존재X, void : 반환값 없음

  int i;

  for(i = 0; i < 5; i++)

    System.out.println("자바 프로그래밍");

  }

}

-> void 타입으로 printString이라는 메서드를 정의한 것 

 

ex) 반환 값이 없으며 매개변수에 전달된 횟수만큼 문자열을 출력하는 메서드 정의

void printString(int count) {         -> 정수형 변수 count라는 이름으로 매개변수를 만듦

 for (i = 0; i < count; i++) {

   System.out.println("자바 프로그래밍");

 }

}

 

ex) 1~10까지 합을 구해 반환하는 메서드 정의

int addData() {           -> 정수형 반환값 -> 반드시 return문 써야 함

  int i, sum = 0

  for (i = 1; i <= 10; i++) {

     sum += i;

  }

  return sum;             -> 호출한 곳에 55를 넘겨줄 수 있음

}

 

ex) 1부터 매개변수에 전달된 값까지의 합을 구해 반환하는 메서드의 정의

int addData(int num) {

  int i, sum = 0;

  for (i = 1; i <= num; i++)

    sum += i;

  }

  return sum;

}

-> 10으로 호출했다면 55를 넘겨줄 수 있다.

 

 

2. 오버로딩

1) 오버로딩 개요

- 메서드 오버로딩 : 메서드의 명칭이 동일하나 매개변수의 개수와 타입을 다르게 구현하는 것을 의미

- 메서드를 동일한 이름으로 여러 개 정의 가능하며 반환타입은 다를 수 있음

- 동일한 이름의 메서드가 다르게 인식되기 위한 조건

  -> 메서드의 매개변수 개수가 다름

  -> 메서드의 매개변수 개수가 동일하나 데이터형이 다름

- 메서드의 명칭이 동일하나 접근 제한자 또는 반환데이터형만 다른 경우

  -> 오버로딩으로 간주되지 않으며 이 경우 컴파일 에러 발생

 

2) 오버로딩 활용

ex) 매개변수의 개수가 다른 경우 오버로딩

void printString() {

  System.out.println("자바 프로그래밍");

}

 

void printString(int count) {

  int i;

  for (i = 0; i < count; i++) {

   System.out.println("자바 프로그래밍");

  }

}

 

-> 호출 시 매개변수를 넘기느냐 넘기지 않느냐에 따라 위 또는 아래가 작동 됨

 

ex) 매개변수의 데이터형이 다른 경우 오버로딩

void addData(int num1, int num2) {

  int result;

  result = num1 + num2

  System.out.println(result);

}

 

void addData(double num1, double num2) {

  double result;

  result = num1 + num2

  System.out.println(result);

}

 

-> 정수로 호출시 첫번째 메서드 호출, 실수로 호출시 두번째 메서드 호출됨 

 

 

- 메서드와 오버로딩 예

public class Exam10_1

        void printString() {

               System.out.println("자바 프로그래밍");

        }

        void printString(int count) {

               int i;

               for (i = 1; i < count; i++) {

                       System.out.println("자바 프로그래밍");

               }

        }

        public static void main(String[] args) {

               Exam10_1 ex = new Exam10_1();

               ex.printString();                        -> 자바 프로그래밍

               ex.printString(3);                      -> 자바 프로그래밍

                                                              자바 프로그래밍

        }

}

728x90
728x90