메서드 오버로딩 자바

kyukim·2021년 1월 17일
0

Java 공부기록

목록 보기
12/35

같은 이름의 메서드를 여러개 가지면서 매개변수의 유형과 갯수를 다르게 하는 메소드 만드는 방법
-> 매개변수의 시그니쳐가 다르면된다.

시그니쳐?
매개변수의 타입, 갯수, 순서를 말함. 컴파일러가 이를 기준으로 메소드를 구분하기 때문에 따로 묶어서 시그니쳐라는 이름을 붙인듯 하다.?

만약에 오버로딩된 똑같은 이름의 클래스가 1000개 있고, 그것 중 필요한 것을 쓸 때 찾는 데에 속도가 많이 느려질까?

컴파일할떄 컴파일러가 내부적으로는 사실 그 똑같은 이름의 클래스들을 바꾼다.

그렇기 때문에 실제로 호출할때, 하나하나 검색해서 찾는게 아니라 매개변수에 따라 새로 붙여진 이름으로 필요한 메소드를 바로 찾는다 (정적 바인딩)

정적 바인딩:
컴파일 시점에서 호출될 메소드가 이미 결정되어 있는 바인딩
그래서 속도와 관계가 없다

public class OverLoad {
    //동작으로만 이루어진 객체
    public void hap(int a, int b) {
        System.out.println(a+b);
    }
    public void hap(float a, int b) {
        System.out.println(a+b);
    }
    public void hap(float a, float b) {
        System.out.println(a+b);
    }
}
public class TPC16 {
    public static void main(String[] args) {
        OverLoad ov = new OverLoad();
        ov.hap(20, 50); // hap_int_int
        ov.hap(20f, 50); // hap_float_int
        ov.hap(20f, 50f); // hap_float_float
    }

}

0개의 댓글