" Association of method call to the method body " - 메서드 호출과 메서드 본문의 연결
다른 정의로는 아래의 내용이다
컴퓨터 프로그래밍에서 각종 값들이 확정되어 더 이상 변경할 수 없는 구속(bind) 상태가 되는 것. 프로그램 내에서 식별자(identifier)가 그 대상인 메모리 주소, 데이터형 또는 실제값으로 배정되는 것
그럼 이제 Binding의 정의가 무엇인지 대충 알았고 정적, 동적 Binding은 무엇인지 알아보자
Static Binding
원시 프로그램의 컴파일링 또는 링크 시에 확정되는 바인딩을 정적 바인딩(static binding)
실행 이전에 값이 확정되면 정적 바인딩(static binding)
static, private, final method 해당 - override 불가능하여, compile 시점에 타입이 결정된다.
예시 코드!
class Human{
public static void walk() {
System.out.println("Human walks");
}
}
class Boy extends Human{
public static void walk(){
System.out.println("Boy walks");
}
public static void main( String args[]) {
/* Reference is of Human type and object is Boy type */
Human obj = new Boy();
/* Reference is of Human type and object is of Human type */
Human obj2 = new Human();
obj.walk();
obj2.walk();
}
}
Output
Human walks Human walks
Dynamic Binding
프로그램의 실행되는 과정에서 바인딩되는 것을 동적 바인딩(dynamic binding)
실행 이후에 값이 확정되면 동적 바인딩(dynamic binding)
대표적인 예시로 Method Overriding - 부모와 자식 Class에 모두 동일한 Method가 존재, 오직 실행 시점에 타입이 결정되어 해당 타입의 Method가 실행됨
예시 코드!
class Human{
//Overridden Method
public void walk() {
System.out.println("Human walks");
}
}
class Demo extends Human{
//Overriding Method
public void walk(){
System.out.println("Boy walks");
}
public static void main( String args[]) {
/* Reference is of Human type and object is Boy type */
Human obj = new Demo();
/* Reference is of HUman type and object is of Human type.*/
Human obj2 = new Human();
obj.walk();
obj2.walk();
}
}