문제
나는 동적 바인딩의 구현이 어떻게 작동하는지 이해하고 정적 바인딩과 동적 결합의 차이점을 이해하고, 동적 바인딩의 정의를 중심으로 뇌를 감싸는 데 어려움을 겪고 있습니다. 기본적으로 런타임 바인딩 유형입니다.
해결책
기본적으로 동적 바인딩은 함수 호출 주소가 어셈블리 언어로 변환 될 때 프로그램의 코드 세그먼트에 하드 코딩되지 않고 다른 곳 (즉, 스택 변수, 어레이 조회 등)에서 얻는다는 것을 의미합니다.
코드 라인이있는 경우 더 높은 수준에서
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
내 해석은 희망적으로 도움이됩니다.
제휴하지 않습니다 StackOverflow