열심히 끝까지

18강 배열 - 메서드 오버로딩 본문

멘토씨리즈 JAVA

18강 배열 - 메서드 오버로딩

노유림 2022. 4. 27. 18:03

<복습>
메서드 
정의 : 여러 명령들을 나열한 묶음
사용이유 ? 이름 호출하는 것으로 여러 개의 명령을 한번에 실행
구조
<구현부> 
메서드가 어떤 명령들로 구성이 되어 있는지 구현하는 부분

리턴타입 메서드명(매개변수1, 매개변수2){
         명령 1;
         명령 2;
         명령 3;
         return 리턴값;
}
리턴타입 : void -> 리턴값이 존재하지 않는다.
-------------------------
<호출부>
메서드에 구현된 명령들이 실행 될 수 있도록 호출하는 부분
메서드명(값1, 값2);

18-1 ) 메서드 오버로딩
       (1) 오버로딩의 정의
                : 오버로딩(Overloading)은 매개변수의 개수와 타입은 다르지만
                  이름이 같은 메서드를 여러 개 정의하는 것

        - 로딩 : 메모리에 적재하다
        - 오버로딩 : 메서드 중복 정의
        - 일반적으로 메서드 사용시, 메서드명을 구분해서 사용
        - 하지만, 같은 기능을 갖고 있는 메서드라면, 매번 이름 정의하는 것이 불필요

         *****
         컴퓨터가 함수를 구분하는 시그니처
         1. 함수명
         2. 함수의 매개변수의 개수
         3. 함수의 매개변수의 타입

   -----------------------------------------------
         2 + 3 = 5                     정수 + 정수
         1.23 + 3.12 = 4.35         실수 + 실수
         "A" + "B" = "AB"            문자열+ 문자열

지원이 되지 않는 경우....
간단하게 표현한 오버로딩


         sum(2, 3)                  
         sum(1.23, 3.14)
         sum("A", "B)

         이 위의 것이 지원되지 않는다하면..?
         sum_int(2, 3)                  
         sum_double(1.23, 3.14)
         sum_String("A", "B)


       (2) 오버로딩 방법
        ex )

오버로딩 방법 - 1, 2, 3 예시


        1. 정수형 값을 두 개 전달받아 두 수의 합을 출력하는 메서드 구현
         static void sum(int x, int y) {
              System.out.println( x + y );
         }


         2. 실수형 값을 두 개 전달받아 두 수의 합을 출력하는 메서드 구현
         ststic void sum(double x, double y) {
               System.out.println( x + y );
         }

  
         3. 정수형 값을 세 개를 전달받아 세 수의 합을 출력하는 메서드 구현
         static void sum(int x, int y, int z) {
              System.out.println( x + y + z );
         }


         < 실습 > Calc.java
               두 수를 전달받아, 두 수의 +, -, *, / 을 계산하는 메서드를 만들어라
               단, 입력받은 수는 정수, 실수 모두 가능!

오버로딩 실습 - 정수형, 실수형, 문자열의 덧셈, 사칙연산


         --------------------------
         <실수의 오류>
         컴퓨터는 실수값을 정확하게 표현할 수 없다
         => 유한한 개수의 비트를 가지고
              무한한 실수를 표현을 해야하므로,
              - 1.1이 나오는 것이 아니라 가장 근사한 근사값이 나온다