티스토리 뷰

Java

오버로딩과 오버라이딩

kunypony 2022. 11. 16. 03:03
728x90

오버로딩 : 기존에 없는 새로운 메서드를 정의하는 것 (new)

오버라이딩 : 상속받은 메서드의 내용을 변경하는 것 (change, modify)

class Parent { void parentMethod() {} }

class Child extends Parent {
	void parentMethod() {} // 오버라이딩
	void parentMethod(int i) {} // 오버로딩
	
	void childMethod() {}
	void childMethod(int i) {} // 오버로딩
}

 

바인딩

오버로딩 : 정적 바인딩, 호출될 메소드가 컴파일 시점에 결정된다. (컴파일 다형성)

오버라이딩 : 동적 바인딩, 호출될 메소드가 실행 시점에 결정된다. (런타임 다형성)

 

바인딩이란 프로그래밍에서 컴각종 값들이 확정되어 더이상 변경할 수 없는 구속(bind) 상태가 되는 것

정적 바인딩 (Static Binding)

  • 원시 프로그램의 컴파일링 또는 링크 시에 확정 되는 바인딩

동적 바인딩 (Dynamic Binding)

  • 프로그램의 실행되는 과정에서 바인딩 되는 것

ex)

int a = 1;
// 데이터 타입 int 로 바인딩 : 정적 바인딩
// 변수명 a 로 바인딩 : 정적 바인딩
// a에 1이라는 값이 바인딩 : 동적 바인딩 

 

 

오버로딩 사용 시 주의점 

매개변수에 대해 어떤 오버로딩 메소드가 호출되는지 분명하게

  • 매개 변수 중 최소한 하나가 근본적으로 다른 타입 (각 타입의 인스턴스를 다른 타입으로 캐스팅 할 수 없는 것)
  • ex) ArrayList<Integer> remove(E) remove(int) </aside>
// <Integer> 타입의 Object와 int 가 상충

// remove(int)
    public E remove(int index) {
        rangeCheck(index);

        modCount++;
        E oldValue = elementData(index);

        int numMoved = size - index - 1;
        if (numMoved > 0)
            System.arraycopy(elementData, index+1, elementData, index,
                             numMoved);
        elementData[--size] = null; // clear to let GC do its work

        return oldValue;
    }

// remove(Object) 
    public boolean remove(Object o) {
        if (o == null) {
            for (int index = 0; index < size; index++)
                if (elementData[index] == null) {
                    fastRemove(index);
                    return true;
                }
        } else {
            for (int index = 0; index < size; index++)
                if (o.equals(elementData[index])) {
                    fastRemove(index);
                    return true;
                }
        }
        return false;
    }

'Java' 카테고리의 다른 글

[JAVA] next(), nextLine(), 입력과 버퍼  (0) 2022.11.17
클래스와 객체, 인스턴스  (0) 2022.11.16
퍼사드 패턴(Facade Pattern)  (0) 2022.11.10
접근 제어자  (0) 2022.11.09
자바 동일성과 동등성("==", "Equals")  (0) 2022.11.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함