☕JAVA/🐣 강의 [JAVA]

[JAVA][기초] 메소드 Method , 오버로딩 Overloading

디카페인라떼 2022. 10. 4. 23:22

[기초] 시리즈는 본강의를 수강후 정리한 글들 입니다.

Java for Beginner - YouTube

 

Java for Beginner

[교재 link] https://github.com/namoosori/java-for-beginner/tree/master/doc Java for Beginner 강의에서 다루는 내용은 다음과 같습니다. - Java 개요 : Java 언어가 어떤 언어이고 Java 언어를 이용해 프...

www.youtube.com


메소드 개요

  • 메소드
    • 클래스를 구성하는 구성요소에서 해당 클래스의 행위를 의미하는 것
    • 메소드를 이해하기 위해서는 먼저 함수 function 가 무엇인지 이해해야 함.
  • 함수
    • 입력, 기능, 출력으로 구성되며 함수의 기능에 따라 입력과 출력은 없을 수 있음.
  • 함수와 메소드의 구분은 클래스의 소속여부로 나누며 특정 클래스에 소속된 경우, 그렇지 않을 경우 함수.

 

메소드의 구성 및 정의
  • 클래스의 구성요소로 메소드의 역할은 해당 클래스의 데이터에 대한 제어
  • 특정 클래스의 데이터, 즉 필드 값의 변경은 곧 해당 클래스의 특정 행위가 수행되는 것
    • ex) 계좌의 잔액을 특정 금액 만큼 빼는 메소드는 곧 출금 행위를 의미

 

메소드의 구성 및 정의2

  • 클래스는 다수의 메소드를 가질 수 있으며, 그 메소드의 기능은 메소드 호출을 통해 수행.
  • 필드와 마찬가지로 메소드에도 접근 지정자를 지정하여 메소드 호출에 대한 범위를 지정 가능
  • 메소드는 static 키워드를 이용해 클래스 메소드와 인스턴스 메소드로 정의

 

메소드 호출의 이해
  • 용어의 차이!
    • 메소드의 입력값 = 파라미터 / 메소드 호출 시 입력값 = 전달인자 (혼용됨)
  • 인스턴스 메소드 (static이 안붙은 메소드)
    • 객체가 인스턴스화 된 이후에만 호출이 가능한 메소드
    • 즉, 인스턴스 메소드를 호출하기 위해서는 객체 생성을 먼저 한 이후에 생성한 참조변수를 통해서 호출 가능

오버로딩 (overloading) 

  • 메소드의 이름을 같게 하고, 파라미터를 달리하여 여러 메소드를 정의하는 방법
    • 자바의 메소드 시그니처 : 정의된 메소드들을 구분할 수 있는 방법
      • 메소드의 이름부터 파라미터까지.
    • 메소드의 반환 타입은 메소드 시그니처에 포함되지 않기 때문에 메소드 오버로딩과는 관련 없음.
    • 메소드 오버로딩은 하나의 클래스 내에서의 기능이며 파라미터는 타입, 순서, 개수를 달리하여 구분할 수 있어야 함.
  • 메소드의 바인딩  : 메소드를 호출 했을 때 그 실행 메소드가 정의되어 있는 그 정의 코드를 수행하는 연결
    • 정적 바인딩 (static) : 프로그램 시작 시점에 바인딩이 고정됨
      • c언어. 그러므로 메소드의 이름을 동일하게 할 수 없음.
    • 동적 바인딩 (Dynamic) : 프로그램이 실행이 되다가 결정됨. 프로그램이 실행되다가 해당 메소드가 호출 되는 시점에 연결
      • 자바 / 동적 바인딩이 진행되기 때문에 메소드 오버로딩이 가능