본문 바로가기

🖥️프로그래밍 언어/Java

[JAVA] 자바 오버로딩(Overloading) Part2

by 필트립 2022. 9. 26.

✔ 오버로딩(Overloading) 아래 Document 참고

https://www.w3schools.com/java/java_methods_overloading.asp

 

Java Method Overloading

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

 

🟥용어정리🟥

오버로딩(Overloading)

자바에서 오버로딩은 한 클래스 안에서 같은 이름을 가진 메소드를 2개 이상 정의하는 것이다. 컴파일러는 이런 이름만 같고 서로 다른 메소드들을 signature(서명) 으로 구별할 수 있다. 

 

Overloading in Java is the ability to define more than one method with the same name in a class. The compiler is able to distinguish between the methods because of their method signatures.

 

 

 

🟩 Method's signature(서명) 란? (3가지)

  1. 메소드 이름 (Method name)
  2. 매개변수의 타입과 갯수 (Type/Number of parameters)
  3. 리턴 타입 (Return type)

 

 

 

 

 

🟪 Overloading 을 하기 위한 조건 3가지!

1. 메소드 (Method) 이름이 같아야함!
2. 리턴 타입 (Return type) 이 같아야함!
3. 매개변수 (Parameters) 는 달라야함!

 

 

 

 

 

아래 예시에 적어 놓은 주석들을 하나하나 읽어보면서
주석처리를 풀어보고 실행시켜보면 이해가 금방 될것이다!

 

 

Tip ✔

아래 코드를 모두 복사 혹은 다운로드 → IDE 에 붙여넣기 한 다음,

실행해보고 이리저리 코드를 수정해가면서

에러가 뜨면, 왜 에러가 뜨는지 직접 몸소 체험을 해봐야 경험치가 쌓입니다!

 

아래 댓글창에 질문 언제든지 해주세요!

(시간되는 대로 답변해드리겠습니다)

 

아래 두 코드는 상속 관계이므로 두개다 참고로 해서 보도록 하자!

// 🟪 Method's signature(서명) 란? (3가지)
// 1. Method name
// 2. Type/Number of parameters
// 3. Return type

// 🟥 Overloading 을 하기 위한 조건 3가지!
// 1. Method 이름 같아야함!
// 2. Return type은 같아야함!
// 3. Parameters 는 달라야함!

public class OverloadingDemo {
    void A() {
        System.out.println("void A()");
    }

    void A(int arg1) {
        System.out.println("void A(int arg1)");
    }

    void A(String arg1) {
        System.out.println("void A(string arg1)");
    }
//  return 값이 다른 method를 overloading 할 수 있는 지 확인해보기 위한 예제!!
//    int A(){
//        System.out.println("void A()");
//    }

    public static void main(String[] args) {
        OverloadingDemo ol = new OverloadingDemo();
        ol.A();
        ol.A(1);
        ol.A("Coding everybody");
    }
}

 

public class OverloadingDemo2 extends OverloadingDemo {
    // ↓ 부모 클래스에서 A method가 있지만, 매개변수(parameter)에 String이 두개 들어가는 형식 X
    // ↓ -> Method Overriding!
    void A(String arg1, String arg2) {
        System.out.println("Sub class: void A(String arg1, String arg2)");
    }

    // ↓ A() method는 인자(parameter)가 없다! But, 매개변수(parameter)가 없는 method는 부모 class에 존재!
    void A() {
        System.out.println("Sub class: void A()");
    }

    public static void main(String[] args) {
        OverloadingDemo2 ol = new OverloadingDemo2();
        ol.A();
        ol.A(1);
        ol.A("coding everybody");
        ol.A("coding everybody", "coding everybody");

    }
}

 

 

 

 

 

↓↓↓↓ 코드 다운로드 ↓↓↓↓

OverloadingDemo.java
0.00MB
OverloadingDemo2.java
0.00MB

 

 

반응형