James A. Rosen
그는 물었다 12년 전
76

초 · 바인딩하면 말 차이가 뭘까?

초 · 바인딩하면 말 차이가 뭘까?

Bob Blogge
그는 7년 전 댓글을 달았습니다
4

내가 말할 수 초 동안 잘못된 것이라고 = 직접 함수 호출 함수 포인터 함수 호출을 통해 말 =? 그것은 결코 간단한 방법 그대를 더 프로그래머가 만든 것 보다 더 복잡한 투명지에 운행에서어떠한 개념 및 만들 방법을 이들은 (as 보여준 인텔리전스와?). 프로그래밍 본질적으로 연구 분야는 매우 쉽게 이루어질 때까지 어떻게 내려와 같은 부동 소수점 유형은 개발을 컴파일러에도.

답변 7 개

이러한 초기의 () 또는 정적 (static) 는 짧은 답이 바인딩하면 및 지연 시간 (또는 동적) 는 컴파일하십시오 바인딩하면 바인딩하면 런타임용으로 개발하십시오 바인딩하면 (예를 들어 사용할 때 반사).

Alexander Bird
그는 9년 전 댓글을 달았습니다
7

그러나 위키백과 기사를 바인딩하면 말 (http://en.wikipedia.org/wiki/Late_binding), 동적 긴급요청이다 바인딩하면 &quot 있다고 말, 상당한 differences&quot 수축됐는데 혼동하는 경우가 많습니다. 그래서 그들은 같은 방관하겠나? 위키피디아 같은 경우, 해당 페이지를 변경할 필요가 있다.

언어, 차이는 컴파일됨 있는 작품.

Java:

<! - 언어: java - &gt.

//early binding:
public create_a_foo(*args) {
 return new Foo(args)
}
my_foo = create_a_foo();

//late binding:
public create_something(Class klass, *args) {
  klass.new_instance(args)
}
my_foo = create_something(Foo);

처음 들어 컴파일러와의 온갖 물건을 할 수 있는 간단한 컴파일 타임에. 두 번째, 그냥 자는 soundmixer. 은 그 방법을 통한 환경 보호 할 수 있기를 기대한다. (물론 '는 새로운 jvm Class&lt,? 연장시킵니다 Foo&gt. 클라스 '구조에 이러한 위험을 크게 줄일 수 있다.)

하트링크 수 있다는 이점도 ide 를 선언한 이후, s 클래스 정의 it& 저기예요 # 39 에서 방법. (Foo) 을 사용할 수 있습니다 (call to create_something very 메서드로부터 아웃하기로 you& # 39, 정의, 멀리 보는 방법을 잘 될 수도 있지만, re 정의마다 구축현 볼 수 있습니다.

주요 장점은 바인딩이 만드는 게 아니라, 같은 말 제어 반전 간소화하는지 덕 타이핑 다형성 및 기타 특정 사용하는 경우 해당 언어를 汲摹窍妨绰 그런 것들을).

(Http://word.mvps.org/fAQs/InterDev/EarlyvsLateBinding.htm&gt) 에서 직접 조롱했기 <;

&gt. 자동화 (또는 OLE 자동화) 를 사용하는 두 가지 방법이 있습니다. &gt. 다른 응용 프로그램을 통해 제어입니다. &gt. &gt. 이 말 크레이트로비치 /dev/raw/raw1 바인딩하면 만들고 인스턴스에서는 &gt. 응용 프로그램 개체 수 있는 제어입니다. 예를 들어, 만드시겠습니까 &gt. excel 바인딩하면 사용하여 새 인스턴스를 말: &gt. &gt. Dim 옥슬레 객체로 &gt. 설정되었습니다 옥슬레 = 크레이트로비치 (Excel.Application&quot ";) &gt. &gt. 반면 기존 Excel 인스턴스에서는 조작할 수 있는 경우 &gt. Excel 이미 열려 제로비치 (여부에 관계 없이 사용하는 것과 &gt. # 39 를 사용하여, re you& 빠르거나 늦은 바인딩하면): &gt. &gt. Dim 옥슬레 객체로 &gt. 설정되었습니다 옥슬레 = 제로비치 (Excel.Application&quot ";) &gt. &gt. 초기 바인딩하면 먼저 참조입니다 설정하지 않아도 사용할 수 있는 &gt. 응용 프로그램 프로젝트를 운영까지도 조작할 수 있습니다. Vb 의 에디터 &gt. 이 일을 스스로 선택하여, 모든 오피스 응용 프로그램, 또는 VB &gt. 응용 프로그램 및 선택 툴 + 참조입니다 운영까지도 &solarisdvd &gt. 목록 (예: "Microsoft Excel v8.0 객체에는 라이브러리란"). &gt. &gt. Excel 의 초기 바인딩하면 사용하여 새 인스턴스를 만듭니다. &gt. &gt. Dim 로 옥슬레 렉셀리아프리카션 &gt. = New 렉셀리아프리카션 옥슬레 설정되었습니다 &gt. &gt. 두 경우 모두, 우여곡절 끝에, 먼저 afaq 시도하시겠습니까 기존 &gt. 엑셀, 오류가 있는 경우 인스턴스에서는 되돌려줍니다 새로 만들 수 있습니다 &gt. 인스턴스입니다 in your 오류 처리기.

Jeff Mercado
JimmyPena
그는 9년 전 댓글을 달았습니다
3

39 는 그러니까말이야 이 되며, 다른 곳에서 받는 질문하시리니 it& 있지만, s, s # 39 it& 정확하지 않습니다. 사용할 수 있지만, 사실상 법적 구속력이 있는 것은 아닙니다 말 말 크레이트로비치 크레이트로비치 바인딩하면 의미합니다. 적용되지 않는 방법은 객체를 인스턴스화하며 바인딩하면 방식에 수 밖에 없다. 선언할 경우에는, Excel.Application&quot &quot 객체에는 있다. # 39, t 이 문제를 어떻게 인스턴스화하지 doesn& 거잖나. 난 항상 flfile. 크레이트로비치 인스턴스화합니다 개체 참조를 외부 라이브러리, 내가 할 수 있는 유일한 말 초 · 바인딩하면 이쪽요 전환할 전환하십시오 아닌 2 개) - 한 줄을 선 선언하는 객체에는.

허버트 실트 책 c++컴파일러는 유사하지만 더 자세한 답변을

초기 바인딩하면 컴파일 타임에 발생하는 이벤트를 말합니다. 즉, 초기 바인딩하면 컴파일 타임에 함수를 호출하는 데 필요한 모든 정보를 때 발생합니다. (동일팔레트에 다르게, 조기 바인딩하면 바인딩되고 컴파일하는 동안 객체와 함수 호출을 의미한다.) 예를 들어 정상적인 기능을 포함한 표준 라이브러리 함수), 초기 바인딩하면 포함시키십시오 페이징됩니다 과부하된 함수 호출, 및 과부하된 것으로 알려졌다. 주 초 효율성을 바인딩하면 수 있다. 필요한 모든 정보를 컴파일 타임에 함수를 호출할 수 있기 때문에, 이러한 유형의 함수 호출을 판별됩니다 매우 빠르다.

그 말 조기 바인딩하면 바인딩하면 있다. 바인딩하면 말 것이다. 함수 호출을 실행할 수 없는 때까지 해결되었으므로 하게하면서요. 가상 함수 사용 후기 충족합니다 바인딩하면. 아시다시피 이용할 때 기본 포인터나 참조를 통해 가상 함수 객체 유형에 따라 실제로 호출됨 판별됩니다 abc. 에 의해 포인터입니다. 이 때문에 대부분의 경우, 그 기능을 확인할 수 없는 컴파일 타임에 객체에는 때까지 시간을 실행하십시오 링크되지는 않습니다. 지난 주 바인딩하면 유연도를 수 있다. 초기 바인딩하면 달리, 늦은 바인딩하면 대응할 수 있는 이벤트를 작성할 수 있도록 프로그램을 진행하는 동안 이 프로그램을 만들 필요 없이 실행하므로 많은 양의 &quot 비상 code."; 이 때문에 그런 점을 유념하십시오 함수 호출, 늦은 시간 전까지 해결되지 않는 실행하십시오 내말들어봐 바인딩하면 대해 다소 느리지만 실행 시간. 오늘 빠른 실행 시간을 크게 줄일 수 있지만, 컴퓨터 관련 바인딩하면 말.

programmerravi
그는 3년 전 댓글을 달았습니다
1

&quot 객체에는 때까지, 그 기능을 time&quot 실행하십시오 링크되지는 않습니다. 이 같은 발언은 한 시간 전에 개체가 실행하십시오 것을 의미하는 것으로 보인다. # 39 시간 t 객체에는 aren&, 순수하게 실행하십시오 엔티티에는? 해당 객체의 클래스를 컴파일 타임에 존재하는. 이 좋은 성과를 거둘 수 있을 수 있다고 &quot 함수 호출에 따라, 그 때까지 time&quot 실행하십시오 구축상의 링크되지는 않습니다.

언어 차이가 있는 것으로, 좀더 미묘합니다.

루비:

# early binding:
def create_a_foo(*args)
  Foo.new(*args)
end
my_foo = create_a_foo

# late binding:
def create_something(klass, *args)
  klass.new(*args)
end
my_foo = create_something(Foo)

루비 (일반적으로) 가 아니라, 그 때문에 컴파일됨 isn& # 39 는 컴파일러와의 만원), 초기 해야 할 것. 성장할까요 제러비 의 루비에 컴파일됨 있기 때문에 더 많다는 것을 의미합니다 표시되어도 jave, 요즘 같은 행동을 한다.

Ide 여전히 문제가 있다. eclipse 와 같은 플랫폼을 볼 수 있는 경우, 그 수는 하드 코드 것가운데 클래스 정의를 그들 둘 경우 최대 요청자에게.

요즘 인기 있는 것은 심히 제어 반전 레일 사용 할 수 있지만, 루비, 아마도 상태였기 때문에 익스프림 런타임용으로 개발하십시오 유연도를 큰 양을 줄이기 위해 필요한 애플리케이션 구성 전달하십시오 바인딩하면 말 것입니다.

zxq9
그는 2년 전 댓글을 달았습니다
0

또한 이 점을 qic 컴파일된 언어 런타임 시 플러그인 구성요소를 포함할 수 있는 JIT 컴파일 또는 동적 프레임워크와도 구현할 수 있습니다. 자바, 루비 및 Python 이 존재하는 일부 정식 참조용이므로 물론 잘 알려져 있다. 극단적인 예로, 얼랭, 한 번에 두 가지 버전으로 업그레이드 할 수 있는 모든 모듈에서는 런타임용으로 개발하십시오 로드하십시오 실시간 / 다운그레이드. 그래서 많은 표시되어도 얼랭 코드 (대부분의?) 정적 및 동적 기능을 작성됩니다 순결케 입력되었는지 런타임용으로 개발하십시오 요구 사항을 지시 아래 바인딩하면 말 추상형데이터타입 후드요.

이 때문에 너무 일찍 또는 컴파일 타임 다형성을 eschweiler-clarke 바인딩하면 또는 정적 바인딩에 같은 방법이 이름과 함께 때 우리는 다른 비헤이비어를. 같은 방법을 구현하여, 다른 여러 프로토타입을 테스트타사의 비헤이비어를 항목이없습니다. 초기 바인딩하면 프로그램의 첫 베스트 말한다. 하지만 후반에 객체인지 바인딩하면 런타임용으로 개발하십시오 테스트타사의 프로그램. Eschweiler-clarke 따라 동적 바인딩 또는 재정의을 또는 런타임용으로 개발하십시오 접근자.

public class child()
{    public void method1()
     {     System.out.println("child1");
     }
    public void method2()
     {     System.out.println("child2");
     }

}
public class teenager extends child()
{    public void method3()
     {      System.out.println("teenager3");
     }
}
public class adult extends teenager()
{     
    public void method1()
    {    System.out.println("adult1);
         super.method1();
     }
}

//In java
public static void main(String []args)
{    ((teenager)var).method1();
}

이 인쇄됩니다

adult1
child1

컴파일러에서 액세스하도록 바인딩하면 초에 모든 방법 하위 및 청소년 하지만 후반에 바인딩하면 (www. 런타임용으로 개발하십시오) 되면 확인할지 메서드입니다 오버라이드됩니다 dell. 런타임용으로 개발하십시오.

업그레이드됨 method1 () 의 하위 - 초기 바인딩하면) 적립율은 재지정됩니다 method1 성인 (후기 바인딩하면) 에서 실행 시 그런 것이 없기 때문에 내 자식 내 에서 method1 method1 method1 함께 펼칠 계획이다.

만일 아이가 method1 다음 주 컴파일하십시오 않을 것이라고 코드를 갖고 있지 않았다.