Suppose I have class A
public class A
{
public void method()
{
//do stuff
}
}
Also another class B
public class B extends A
{
public void method()
{
//do other stuff
}
}
Now I have the following statements:
A a = new B();
a.method();
Is this an example of run time polymorphism? If yes, then is no binding is done for the reference a at compile time?
The compiler will tell you that this can’t work, because there’s no relationship between A and B that will allow you to writeA a = new B();B either has to extend A or both have to implement a common interface with
void method()in it.You could have answered this very quickly by trying it with the compiler. Be an experimentalist – it’s faster than forums.
UPDATE:
It works, now that B extends A. The binding that you care about, dynamic binding, is done at runtime. The static compile time type for the variable “a” is class A; at runtime it is dynamically bound to a reference of type B. Yes, I would consider this to be an example of polymorphism.