실행 이전에 값이 확정되면 정적 바인딩이라고 한다.
컴파일 타임에 호출될 함수가 결정되는 것으로, 함수는 기본적으로 정적 바인딩 된다.
컴파일러는 선언되어 있는 자료형을 보고 바인딩을 하기 때문에 실제로 가리키는 객체가 무엇이든 포인터의 자료형을 기반으로 호출의 대상을 결정한다.
실행 이후에 값이 확정되면 동적 바인딩이라고 한다.
이 둘의 주요차이점은
정적바인딩은 컴파일 시점에 변수나 함수 이름과 그 실제 값이 연결하는 과정이 프로그램 실행 전에 결정되며, 동적바인딩은 프로그램이 실행되는 도중에 바인딩이 수행되며, 변수나 함수 이름과 그 실제 값이 연결되는 과정이 런타임임에 결정된다.
//정적바인딩의 예
public static int a=3;
//동적바인딩의 예
public int b=4;
정적 바인딩은 컴파일 시간에 많은 정보가 결정되므로 실행 효율이 올라가 실행이 빠르다는 장점이 있고, 동적바인딩은 런타임에 자유롭게 성격이 바뀌므로 적용성이 뛰어나지만 정적바인딩에 비해 느리다는 단점이 있다.