What is runtime binding?

前端 未结 4 978
广开言路
广开言路 2021-02-09 03:58

I\'m going through the android development training docs and stumbled upon this:

\"An Intent is an object that provides runtime binding between separate

4条回答
  •  终归单人心
    2021-02-09 04:15

    Dynamic Binding refers to the case where compiler is not able to resolve the call and the binding is done at runtime only. Let's try to understand this. Suppose we have a class named 'SuperClass' and another class named 'SubClass' extends it. Now a 'SuperClass' reference can be assigned to an object of the type 'SubClass' as well. If we have a method (say 'someMethod()') in the 'SuperClass' which we override in the 'SubClass' then a call of that method on a 'SuperClass' reference can only be resolved at runtime as the compiler can't be sure of what type of object this reference would be pointing to at runtime.

    ...
    SuperClass superClass1 = new SuperClass();
    SuperClass superClass2 = new SubClass();
    ...
    
    superClass1.someMethod(); // SuperClass version is called
    superClass2.someMethod(); // SubClass version is called
    ....
    

    Here, we see that even though both the object references superClass1 and superClass2 are of type 'SuperClass' only, but at run time they refer to the objects of types 'SuperClass' and 'SubClass' respectively.

    Hence, at compile time the compiler can't be sure if the call to the method 'someMethod()' on these references actually refer to which version of the method - the super class version or the sub class version.

    Thus, we see that dynamic binding in Java simply binds the method calls (inherited methods only as they can be overriden in a sub class and hence compiler may not be sure of which version of the method to call) based on the actual object type and not on the declared type of the object reference.

    Copied from the following site

提交回复
热议问题