새소식

반응형
Java

[JAVA] 정적, 동적 바인딩 (Static, Dynamic Binding)

  • -
반응형

출처 : https://ko.strephonsays.com/static-binding-and-vs-dynamic-binding-15304

Binding이란 무엇이고,

Static, Dynamic Binding의 의미, 차이는 무엇일까?

 


Binding

Binding에 관련해서는 여러 가지 정의가 있다

찾아본 내용 중에 가장 의미가 잘 와닿는 부분으로는 

" 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();
   }
}

 

Output

Boy walks
Human walks

 

참고 URL :)

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.