본문 바로가기
JAVA

정적바인딩과 동적 바인딩의 차이점은?

by ddahu 2023. 8. 7.

정적 바인딩과 동적 바인딩의 차이

 

우선 자바에서 '바인딩' 이란 개념을 알아볼 필요가 있다. 바인딩은 컴파일러 또는 실행 시 실제로 어떤 메서드 구현을 호출 할지를 결정하는 과정을 나타낸다.


프로그래밍에서 '바인딩'은 함수나 메소드를 호출할 때 어떤 코드가 실행될지를 결정하는 프로세스를 의미하며 정적 바인딩과 동적 바인딩은 이러한 바인딩 방식의 두 가지 주요 유형이다.

 

이 두 가지 방식은 언제 어떻게 함수나 메소드가 결정되는지에 관한 중요한 차이점을 가지고 있다.


  • 정적 바인딩(Static Binding)
    정적 바인딩은 컴파일 시간에 함수 또는 메소드가 호출될 때 어떤 코드가 실행될지가 결정되는 방식이다. 이 방식에서는 호출 대상이 컴파일 시간에 이미 결정되므로 실행 중에는 변경되지 않는다.

    정적 바인딩의 특징:

    속도 :  정적 바인딩은 컴파일러가 최적화할 수 있기 때문에 실행 속도가 상대적으로 더 빠를 수 있다.
    컴파일 시 오류 검출 :  호출 대상 함수 또는 메소드가 존재하지 않을 경우 컴파일 시간에 오류가 발생 할 수 있다.
    예측 가능성 :  프로그램의 동작이 컴파일 시에 결정되므로, 실행 중에 예측할 수 있는 결과를 가지고 있다.

 

  • 동적 바인딩 (Dynamic Binding)
    동적 바인딩은 실행 시간에 함수 또는 메소드가 호출될 때 어떤 코드가 실행될지가 결정되는 방식이다. 이 방식에서는 호출 대상이 실행 시간에 결정되므로, 상황에 따라 호출되는 함수나 메소드가 변경될 수 있다.

    동적 바인딩의 특징:

    유연성: 실행 시간에 호출 대상을 결정하므로, 프로그램의 동작을 동적으로 변경할 수 있다.
    런타임 오류 검출: 호출 대상 함수나 메소드가 없을 경우 런타임 중에 오류가 발생하므로, 컴파일 시간에는 확인하기 어렵지만 프로그램의 흐름을 더 유연하게 다룰 수 있다.
    다형성 및 상속 활용: 동적 바인딩은 다형성과 상속과 같은 객체 지향 프로그래밍 개념을 효과적으로 활용할 수 있도록 한다.

 

  • 결론 차이점
    정적 바인딩과 동적 바인딩은 프로그래밍에서 함수나 메소드 호출 시 어떤 코드가 실행될지를 결정하는 방식의 차이를 나타낸다. 정적 바인딩은 컴파일 시간에 호출 대상이 결정되고, 동적 바인딩은 실행 시간에 결정된다. 각각의 방식은 프로그램의 성격과 상황에 따라 선택되어야 할 것이다.
  •