바인딩이란?
- 변수에 구체적인 값을 할당하는 과정
- 메소드를 호출할 때 그 메소드가 위치한 메모리 주소로 연결하는 과정
정적 바인딩, 동적 바인딩
- 정적 바인딩은 컴파일러에 의해 컴파일 타임에 결정. 즉, 정적 바인딩으로 메소드를 호출 하는 것은 이미 JVM의 클래스 로더 시스템이 동작할 때 메소드의 메모리 주소로 연결이 되어 있는 것
- private, final and static members(methods and variables) — 정적 바인딩
- virtual methods — 동적 바인딩. run time object에 기반하여 binding이 진행됨
- 정적 바인딩은 Type(형)을 보고 바인딩이 진행되고 동적 바인딩은 런타임 시의 객체를 사용해서 바인딩을 진행함
- Overloaded 메서드는 정적 바인딩을 통해 호출이 되고 Overridden method는 동적 바인딩을 통해 호출이 됨
- static 키워드가 붙은 부분들은 JVM에서 객체가 생성되기 전에 먼저 메모리에 올리기 때문에, 런타임 전에 이미 생성되어 있음
- 또한 static, final, private member들은 정적으로 바인딩이 되기 때문에 컴파일 시점에 해당 변수의 형을 보고 호출할 메서드가 결정됨