For some more twist to the problem:
Add one more class:
And add this constructor to the class
Test:
Now, the class will not compile and produces the following error:
-----------------------------
Test.java:16: reference to Test is ambiguous, both method Test(B) in Test and method Test(C) in Test match
{ new Test(null);
^
1 error
------------------------------
See, previously in absence of any ambiguity, the runtime method resolution mechanism, has chosen the constructor with argument of type B, as the class B is the lowest class in the hierarchy, and between Object, A and B, the mechanism does not face any conflict which to choose.
But, when constructor with parameter of type C(subclass of Object) is added, the mechanism cannot make out which to choose and now there are two choices - one with parameter B and one with parameter C.
HTH.