Static Binding Dynamic Binding

HH_Nebula·2022년 8월 30일

바인딩 Binding

메서드에 대한 호출과 실제 구현된 메서드의 코드와 연결되는 것을 바인딩(binding)이라고 한다. 바인딩에는 크게 정적 바인딩(static binding)동적 바인딩(dynamic binding) 이 있다

정적 바인딩(static binding) 은 객체의 타입이 컴파일러에 의해 컴파일되는 시점에 결정되는 것을 말하며 private final static 메서드의 경우 모두 정적 바인딩이 된다. ( 모두 상속과 오버라이딩이 안되는 것들이다. )

동적 바인딩(dynamic binding) 은 객체의 타입이 실행 중에 결정되는 것을 말하며, 오버라이딩 된 메서드가 동적바인딩을 한다.

public class TestBinding {
	public static void main(String[] args) {
		Parent p = new Child();
		p.display();
	}
}

class Parent {
	void display() {
		System.out.println("Parent display");
	}
}

class Child extends Parent {
	void display() {
		System.out.println("Child display");
	}
}

위 코드처럼 오버라이딩 된 메서드가 있을 경우 해당 메서드를 호출하는 코드 p.display(); 는 컴파일 시에는 정적 바인딩, 실행 시에는 조상과 자손 클래스 중 어떤 메서드를 호출할 것인가를 판단하여 동작하게 된다. 이처럼 실행 중 판단하여 동작하는 것을 동적 바인딩이라고 한다.

profile
공부하고 기록하고 복습하고

0개의 댓글