문제

나는 동적 바인딩의 구현이 어떻게 작동하는지 이해하고 정적 바인딩과 동적 결합의 차이점을 이해하고, 동적 바인딩의 정의를 중심으로 뇌를 감싸는 데 어려움을 겪고 있습니다. 기본적으로 런타임 바인딩 유형입니다.

도움이 되었습니까?

해결책

기본적으로 동적 바인딩은 함수 호출 주소가 어셈블리 언어로 변환 될 때 프로그램의 코드 세그먼트에 하드 코딩되지 않고 다른 곳 (즉, 스택 변수, 어레이 조회 등)에서 얻는다는 것을 의미합니다.

코드 라인이있는 경우 더 높은 수준에서

foo(bar) //Calls a funciton

컴파일 시간에 정확히 어떤 기능을 호출 할 것인지 알 수 있다면, 이것은 정적 바인딩입니다. FOO가 컴파일 시간에 알 수없는 것들에 따라 여러 기능을 의미 할 수 있다면 동적 바인딩입니다.

다른 팁

나는 그것이 다형성에서 분명하다는 것을 이해한다. 일반적으로 기본 클래스에서 파생되는 여러 클래스를 만들 때. 파생 클래스 각각에 각각의 기능이 포함 된 함수가 포함 된 경우. 기본 클래스는 파생 클래스의 함수를 실행하는 데 사용될 수 있으며 올바른 기능을 올바르게 호출합니다.

예를 들어:

class Animal
{
void talk();
}

class Dog extends Animal
{
public void talk() { System.out.println("woof"); }
}

class Cat extends Animal
{
public void talk() { System.out.println("meow"); }
}

....
Animal zoo[2];
zoo[0] = new Dog();
zoo[1] = new Cat();

for(Animal animalToggle: zoo)
{
animalToggle.talk();
}

인쇄 : Woof Meow

내 해석은 희망적으로 도움이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top