메서드2

강진구·2024년 3월 11일

JAVA기초

목록 보기
13/14

자바에서 아주 중요한 대원칙

자바는 항상 변수의 값을 복사해서 대입한다

  • 참조형도 똑같다 참조형 변수에 있는 값인 참조값을 복사한다

  • main()도 사실은 메서드이다 각각의 메서드 안에서 사용하는 변수는 서로 완전히 분리된 다른 변수이다
  • 이름이 같아도 완전히 다른 변수다
  • main()의 number와 changeNumber()의 number는 서로 다른 변수이다

메서드 오버로딩

다음과 같은 메서드를 만들고 싶다

  • 두 수를 더하는 메서드
  • 세 수를 더하는 메서드

    이 경우 둘 다 더하는 메서드이기 때문에 가급적 같은 이름인 add를 사용하고 싶다
    자바는 메서드의 이름 뿐만 아니라 매개변수 정보를 함께 사용해서 메서드를 구분한다
    따라서 이름이 같고, 매개변수가 다른 메서드를 정의할 수 있다

  • 이렇게 이름이 같고 매개변수가 다른 메서드를 여러개 정의하는 것을 메서드 오버로딩(Overloading)이라 한다
  • 오버로딩은 번역하면 과적인데, 과하게 물건을 담았다는 뜻이다
  • 같은 이름의 메서드를 여러개 정의했다고 이해하면 된다

오버로딩 규칙

  • 메서드의 이름이 같아도 매개변수의 타입 및 순서가 다르면 오버로딩을 할 수 있다
  • 반환타입은 인정하지 않는다
    이 케이스는 메서드 이름과 매개변수의 타입이 같으므로 컴파일 오류가 발생한다

메서드 시그니처

메서드 시그니처 = 메서드 이름 + 매개변수 타입(순서)

  • 메서드 시그니처는 자바에서 메서드를 구분할 수 있는 고유한 식별자나 서명을 뜻한다
  • 메서드 시그니처는 메서드를 구분할 수 있는 기준이다
  • 자바 입장에서는 각각의 메서드를 고유하게 구분할 수 있어야한다
  • 메서드 오버로딩에서 설명한 것 처럼 메서드 이름이 같아도 메서드 시그니처가 다르면 다른 메서드로 간주한다
  • 반환 타입은 시그니처에 포함되지 않는다

변수명 VS 메서드명

  • 변수 이름은 일반적으로 명사를 사용한다
  • 메서드명은 무언가 동작하는데 사용하기 때문에 일반적으로 동사로 시작한다
profile
기록하고,발전하자

0개의 댓글